avformat/rawdec: add FF_DEF_RAWVIDEO_DEMUXER2, which allows specifying the flags
[ffmpeg.git] / libavformat / rawdec.h
index 3eed6e7..328a4fb 100644 (file)
 
 #include "avformat.h"
 #include "libavutil/log.h"
-
-typedef struct RawAudioDemuxerContext {
-    AVClass *class;
-    int sample_rate;
-    int channels;
-} RawAudioDemuxerContext;
+#include "libavutil/opt.h"
 
 typedef struct FFRawVideoDemuxerContext {
     const AVClass *class;     /**< Class for private options. */
     char *video_size;         /**< String describing video size, set by a private option. */
+    char *pixel_format;       /**< Set by a private option. */
+    AVRational framerate;     /**< AVRational describing framerate, set by a private option. */
 } FFRawVideoDemuxerContext;
 
-extern const AVClass ff_rawaudio_demuxer_class;
-extern const AVClass ff_rawvideo_demuxer_class;
-
-int ff_raw_read_header(AVFormatContext *s, AVFormatParameters *ap);
+extern const AVOption ff_rawvideo_options[];
 
 int ff_raw_read_partial_packet(AVFormatContext *s, AVPacket *pkt);
 
-int ff_raw_audio_read_header(AVFormatContext *s, AVFormatParameters *ap);
+int ff_raw_audio_read_header(AVFormatContext *s);
 
-int ff_raw_video_read_header(AVFormatContext *s, AVFormatParameters *ap);
+int ff_raw_video_read_header(AVFormatContext *s);
 
-#define FF_DEF_RAWVIDEO_DEMUXER(shortname, longname, probe, ext, id)\
+#define FF_RAWVIDEO_DEMUXER_CLASS(name)\
+static const AVClass name ## _demuxer_class = {\
+    .class_name = #name " demuxer",\
+    .item_name  = av_default_item_name,\
+    .option     = ff_rawvideo_options,\
+    .version    = LIBAVUTIL_VERSION_INT,\
+};
+
+#define FF_DEF_RAWVIDEO_DEMUXER2(shortname, longname, probe, ext, id, flag)\
+FF_RAWVIDEO_DEMUXER_CLASS(shortname)\
 AVInputFormat ff_ ## shortname ## _demuxer = {\
     .name           = #shortname,\
     .long_name      = NULL_IF_CONFIG_SMALL(longname),\
@@ -55,8 +58,13 @@ AVInputFormat ff_ ## shortname ## _demuxer = {\
     .read_header    = ff_raw_video_read_header,\
     .read_packet    = ff_raw_read_partial_packet,\
     .extensions     = ext,\
-    .flags          = AVFMT_GENERIC_INDEX,\
-    .value          = id,\
+    .flags          = flag,\
+    .raw_codec_id   = id,\
+    .priv_data_size = sizeof(FFRawVideoDemuxerContext),\
+    .priv_class     = &shortname ## _demuxer_class,\
 };
 
+#define FF_DEF_RAWVIDEO_DEMUXER(shortname, longname, probe, ext, id)\
+FF_DEF_RAWVIDEO_DEMUXER2(shortname, longname, probe, ext, id, AVFMT_GENERIC_INDEX)
+
 #endif /* AVFORMAT_RAWDEC_H */