[Libav-user] How to access the struct AVCodecTag?

Giuseppe Torelli giutorcom at gmail.com
Tue Mar 17 21:21:16 EET 2020


I want to fill two combo boxes in a GTK+3 program with the container and
its relevant codecs. I have this code:

#include <stdlib.h>
#include <string.h>
#include <libavcodec/avcodec.h>
#include <libavutil/opt.h>
#include <libavformat/avformat.h>

int main(int argc, char **argv)

AVCodec *encoder = NULL;
struct AVCodecTag **avctag;
AVOutputFormat *outputFormat = NULL;

const char *file = "file.mp4";
outputFormat = av_guess_format(0, file, 0);

if( ! outputFormat)
printf ("No container found\n");
exit (1);
printf("%s %d\n",outputFormat->long_name,outputFormat->video_codec);

avctag = outputFormat->codec_tag;
printf("%d\n", (outputFormat->codec_tag[0])->id);

gcc gives this output:
enum_codec.c:60:9: warning: assignment from incompatible pointer type
  avctag = outputFormat->codec_tag;
enum_codec.c:61:45: error: dereferencing pointer to incomplete type ‘const
struct AVCodecTag’
  printf("%d\n", (outputFormat->codec_tag[0])->id);

Even adding this in the code it doesn't make any change:

struct AVCodecTag
enum AVCodecID id;
unsigned int tag;

Can someone explain how to access id and tag inside AVCodecTag?

Many thanks
Youtube: www.youtube.com/giutor73
Instagram: the.italian.dude
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20200317/187e6fbc/attachment.html>

More information about the Libav-user mailing list