80
43
GstAudioChannelPosition gst;
81
44
} _ff_to_gst_layout[] = {
83
CH_FRONT_LEFT, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT}, {
84
CH_FRONT_RIGHT, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT}, {
85
CH_FRONT_CENTER, GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER}, {
86
CH_LOW_FREQUENCY, GST_AUDIO_CHANNEL_POSITION_LFE1}, {
87
CH_BACK_LEFT, GST_AUDIO_CHANNEL_POSITION_REAR_LEFT}, {
88
CH_BACK_RIGHT, GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT}, {
89
CH_FRONT_LEFT_OF_CENTER, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER}, {
90
CH_FRONT_RIGHT_OF_CENTER, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER}, {
91
CH_BACK_CENTER, GST_AUDIO_CHANNEL_POSITION_REAR_CENTER}, {
92
CH_SIDE_LEFT, GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT}, {
93
CH_SIDE_RIGHT, GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT}, {
94
CH_TOP_CENTER, GST_AUDIO_CHANNEL_POSITION_TOP_CENTER}, {
95
CH_TOP_FRONT_LEFT, GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_LEFT}, {
96
CH_TOP_FRONT_CENTER, GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_CENTER}, {
97
CH_TOP_FRONT_RIGHT, GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_RIGHT}, {
98
CH_TOP_BACK_LEFT, GST_AUDIO_CHANNEL_POSITION_TOP_REAR_LEFT}, {
99
CH_TOP_BACK_CENTER, GST_AUDIO_CHANNEL_POSITION_TOP_REAR_CENTER}, {
100
CH_TOP_BACK_RIGHT, GST_AUDIO_CHANNEL_POSITION_TOP_REAR_RIGHT}, {
101
CH_STEREO_LEFT, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT}, {
102
CH_STEREO_RIGHT, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT}
46
AV_CH_FRONT_LEFT, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT}, {
47
AV_CH_FRONT_RIGHT, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT}, {
48
AV_CH_FRONT_CENTER, GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER}, {
49
AV_CH_LOW_FREQUENCY, GST_AUDIO_CHANNEL_POSITION_LFE1}, {
50
AV_CH_BACK_LEFT, GST_AUDIO_CHANNEL_POSITION_REAR_LEFT}, {
51
AV_CH_BACK_RIGHT, GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT}, {
52
AV_CH_FRONT_LEFT_OF_CENTER, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER}, {
53
AV_CH_FRONT_RIGHT_OF_CENTER,
54
GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER}, {
55
AV_CH_BACK_CENTER, GST_AUDIO_CHANNEL_POSITION_REAR_CENTER}, {
56
AV_CH_SIDE_LEFT, GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT}, {
57
AV_CH_SIDE_RIGHT, GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT}, {
58
AV_CH_TOP_CENTER, GST_AUDIO_CHANNEL_POSITION_TOP_CENTER}, {
59
AV_CH_TOP_FRONT_LEFT, GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_LEFT}, {
60
AV_CH_TOP_FRONT_CENTER, GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_CENTER}, {
61
AV_CH_TOP_FRONT_RIGHT, GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_RIGHT}, {
62
AV_CH_TOP_BACK_LEFT, GST_AUDIO_CHANNEL_POSITION_TOP_REAR_LEFT}, {
63
AV_CH_TOP_BACK_CENTER, GST_AUDIO_CHANNEL_POSITION_TOP_REAR_CENTER}, {
64
AV_CH_TOP_BACK_RIGHT, GST_AUDIO_CHANNEL_POSITION_TOP_REAR_RIGHT}, {
65
AV_CH_STEREO_LEFT, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT}, {
66
AV_CH_STEREO_RIGHT, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT}
70
gst_ffmpeg_channel_positions_to_layout (GstAudioChannelPosition * pos,
75
gint channels_found = 0;
80
for (i = 0; i < channels; i++) {
81
for (j = 0; j < G_N_ELEMENTS (_ff_to_gst_layout); j++) {
82
if (_ff_to_gst_layout[j].gst == pos[i]) {
83
ret |= _ff_to_gst_layout[j].ff;
90
if (channels_found != channels)
106
gst_ffmpeg_channel_layout_to_gst (AVCodecContext * context,
96
gst_ffmpeg_channel_layout_to_gst (guint64 channel_layout, gint channels,
107
97
GstAudioChannelPosition * pos)
109
guint nchannels = 0, channels = context->channels;
110
guint64 channel_layout = context->channel_layout;
111
100
gboolean none_layout = FALSE;
113
102
if (channel_layout == 0) {
251
case CODEC_ID_DVVIDEO:
286
case AV_CODEC_ID_DVVIDEO:
256
291
gint width, height;
257
292
gint par_n, par_d;
258
293
gint framerate_n, framerate_d;
261
GST_MAKE_FOURCC ('Y', '4', '1', 'B'), 720, 480, 10, 11, 30000, 1001}, {
262
GST_MAKE_FOURCC ('Y', '4', '1', 'B'), 720, 480, 40, 33, 30000, 1001}, {
263
GST_MAKE_FOURCC ('I', '4', '2', '0'), 720, 576, 59, 54, 25, 1}, {
264
GST_MAKE_FOURCC ('I', '4', '2', '0'), 720, 576, 118, 81, 25, 1}, {
265
GST_MAKE_FOURCC ('Y', '4', '1', 'B'), 720, 576, 59, 54, 25, 1}, {
266
GST_MAKE_FOURCC ('Y', '4', '1', 'B'), 720, 576, 118, 81, 25, 1}
296
"Y41B", 720, 480, 8, 9, 30000, 1001}, {
297
"Y41B", 720, 480, 32, 27, 30000, 1001}, {
298
"Y42B", 720, 480, 8, 9, 30000, 1001}, {
299
"Y42B", 720, 480, 32, 27, 30000, 1001}, {
300
"I420", 720, 576, 16, 15, 25, 1}, {
301
"I420", 720, 576, 64, 45, 25, 1}, {
302
"Y41B", 720, 576, 16, 15, 25, 1}, {
303
"Y41B", 720, 576, 64, 45, 25, 1}, {
304
"Y42B", 720, 576, 16, 15, 25, 1}, {
305
"Y42B", 720, 576, 64, 45, 25, 1}, {
306
"Y42B", 1280, 1080, 1, 1, 30000, 1001}, {
307
"Y42B", 1280, 1080, 3, 2, 30000, 1001}, {
308
"Y42B", 1440, 1080, 1, 1, 25, 1}, {
309
"Y42B", 1440, 1080, 4, 3, 25, 1}, {
310
"Y42B", 960, 720, 1, 1, 60000, 1001}, {
311
"Y42B", 960, 720, 4, 3, 60000, 1001}, {
312
"Y42B", 960, 720, 1, 1, 50, 1}, {
313
"Y42B", 960, 720, 4, 3, 50, 1},};
269
315
gint n_sizes = G_N_ELEMENTS (profiles);
271
caps = gst_caps_new_empty ();
272
for (i = 0; i < n_sizes; i++) {
273
temp = gst_caps_new_simple (mimetype,
274
"width", G_TYPE_INT, profiles[i].width,
275
"height", G_TYPE_INT, profiles[i].height,
276
"framerate", GST_TYPE_FRACTION, profiles[i].framerate_n,
277
profiles[i].framerate_d, "pixel-aspect-ratio", GST_TYPE_FRACTION,
278
profiles[i].par_n, profiles[i].par_d, NULL);
280
gst_caps_append (caps, temp);
317
if (strcmp (mimetype, "video/x-raw") == 0) {
318
caps = gst_caps_new_empty ();
319
for (i = 0; i < n_sizes; i++) {
320
temp = gst_caps_new_simple (mimetype,
321
"format", G_TYPE_STRING, profiles[i].csp,
322
"width", G_TYPE_INT, profiles[i].width,
323
"height", G_TYPE_INT, profiles[i].height,
324
"framerate", GST_TYPE_FRACTION, profiles[i].framerate_n,
325
profiles[i].framerate_d, "pixel-aspect-ratio",
326
GST_TYPE_FRACTION, profiles[i].par_n, profiles[i].par_d, NULL);
328
gst_caps_append (caps, temp);
331
caps = gst_caps_new_empty ();
332
for (i = 0; i < n_sizes; i++) {
333
temp = gst_caps_new_simple (mimetype,
334
"width", G_TYPE_INT, profiles[i].width,
335
"height", G_TYPE_INT, profiles[i].height,
336
"framerate", GST_TYPE_FRACTION, profiles[i].framerate_n,
337
profiles[i].framerate_d, "pixel-aspect-ratio",
338
GST_TYPE_FRACTION, profiles[i].par_n, profiles[i].par_d, NULL);
340
gst_caps_append (caps, temp);
345
case AV_CODEC_ID_DNXHD:
286
347
caps = gst_caps_new_simple (mimetype,
287
348
"width", G_TYPE_INT, 1920,
302
396
* default unfixed setting */
304
398
GST_DEBUG ("Creating default caps");
305
caps = gst_caps_new_simple (mimetype, NULL, NULL, NULL);
399
caps = gst_caps_new_empty_simple (mimetype);
308
for (i = 0; i < gst_caps_get_size (caps); i++) {
309
va_start (var_args, fieldname);
310
structure = gst_caps_get_structure (caps, i);
311
gst_structure_set_valist (structure, fieldname, var_args);
402
va_start (var_args, fieldname);
403
gst_caps_set_simple_valist (caps, fieldname, var_args);
410
get_nbits_set (guint64 n)
415
for (i = 0; i < 64; i++) {
416
if ((n & (G_GUINT64_CONSTANT (1) << i)))
424
gst_ffmpeg_audio_set_sample_fmts (GstCaps * caps,
425
const enum AVSampleFormat *fmts)
429
GstAudioFormat format;
431
if (!fmts || fmts[0] == -1) {
434
g_value_init (&va, GST_TYPE_LIST);
435
g_value_init (&v, G_TYPE_STRING);
436
for (i = 0; i <= AV_SAMPLE_FMT_DBL; i++) {
437
format = gst_ffmpeg_smpfmt_to_audioformat (i);
438
if (format == GST_AUDIO_FORMAT_UNKNOWN)
440
g_value_set_string (&v, gst_audio_format_to_string (format));
441
gst_value_list_append_value (&va, &v);
443
gst_caps_set_value (caps, "format", &va);
449
g_value_init (&va, GST_TYPE_LIST);
450
g_value_init (&v, G_TYPE_STRING);
451
while (*fmts != -1) {
452
format = gst_ffmpeg_smpfmt_to_audioformat (*fmts);
453
if (format != GST_AUDIO_FORMAT_UNKNOWN) {
454
g_value_set_string (&v, gst_audio_format_to_string (format));
455
gst_value_list_append_value (&va, &v);
459
if (gst_value_list_get_size (&va) == 1) {
460
/* The single value is still in v */
461
gst_caps_set_value (caps, "format", &v);
462
} else if (gst_value_list_get_size (&va) > 1) {
463
gst_caps_set_value (caps, "format", &va);
318
469
/* same for audio - now with channels/sample rate
321
gst_ff_aud_caps_new (AVCodecContext * context, enum CodecID codec_id,
322
gboolean encode, const char *mimetype, const char *fieldname, ...)
472
gst_ff_aud_caps_new (AVCodecContext * context, AVCodec * codec,
473
enum CodecID codec_id, gboolean encode, const char *mimetype,
474
const char *fieldname, ...)
324
476
GstCaps *caps = NULL;
325
GstStructure *structure = NULL;
327
478
va_list var_args;
425
/* TODO: handle context->channel_layouts here to set
426
* the list of channel layouts supported by the encoder.
427
* Unfortunately no encoder uses this yet....
429
577
/* regardless of encode/decode, open up channels if applicable */
430
578
/* Until decoders/encoders expose the maximum number of channels
431
579
* they support, we whitelist them here. */
432
580
switch (codec_id) {
433
case CODEC_ID_WMAPRO:
434
case CODEC_ID_TRUEHD:
581
case AV_CODEC_ID_WMAPRO:
582
case AV_CODEC_ID_TRUEHD:
441
if (maxchannels == 1)
442
caps = gst_caps_new_simple (mimetype,
443
"channels", G_TYPE_INT, maxchannels, NULL);
445
caps = gst_caps_new_simple (mimetype,
446
"channels", GST_TYPE_INT_RANGE, 1, maxchannels, NULL);
589
if (codec && codec->channel_layouts) {
590
const uint64_t *layouts = codec->channel_layouts;
591
GstAudioChannelPosition pos[64];
593
caps = gst_caps_new_empty ();
595
gint nbits_set = get_nbits_set (*layouts);
597
if (gst_ffmpeg_channel_layout_to_gst (*layouts, nbits_set, pos)) {
600
if (gst_audio_channel_positions_to_mask (pos, nbits_set, FALSE,
603
gst_caps_new_simple (mimetype, "channel-mask", GST_TYPE_BITMASK,
605
"channels", G_TYPE_INT, nbits_set, NULL);
607
gst_caps_append (caps, tmp);
613
if (maxchannels == 1)
614
caps = gst_caps_new_simple (mimetype,
615
"channels", G_TYPE_INT, maxchannels, NULL);
617
caps = gst_caps_new_simple (mimetype,
618
"channels", GST_TYPE_INT_RANGE, 1, maxchannels, NULL);
448
622
GValue list = { 0, };
449
GstStructure *structure;
451
624
g_value_init (&list, GST_TYPE_LIST);
452
625
for (i = 0; i < n_rates; i++) {
527
case CODEC_ID_MPEG2VIDEO_XVMC:
721
case AV_CODEC_ID_MPEG2VIDEO_XVMC:
528
722
/* this is a special ID - don't need it in GStreamer, I think */
725
case AV_CODEC_ID_H263:
533
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-h263",
534
"variant", G_TYPE_STRING, "itu",
535
"h263version", G_TYPE_STRING, "h263", NULL);
728
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
729
"video/x-h263", "variant", G_TYPE_STRING, "itu", "h263version",
730
G_TYPE_STRING, "h263", NULL);
537
732
/* don't pass codec_id, we can decode other variants with the H263
538
733
* decoder that don't have specific size requirements
541
gst_ff_vid_caps_new (context, CODEC_ID_NONE, encode, "video/x-h263",
542
"variant", G_TYPE_STRING, "itu", NULL);
736
gst_ff_vid_caps_new (context, NULL, AV_CODEC_ID_NONE, encode,
737
"video/x-h263", "variant", G_TYPE_STRING, "itu", NULL);
547
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-h263",
548
"variant", G_TYPE_STRING, "itu",
549
"h263version", G_TYPE_STRING, "h263p", NULL);
741
case AV_CODEC_ID_H263P:
743
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-h263",
744
"variant", G_TYPE_STRING, "itu", "h263version", G_TYPE_STRING,
550
746
if (encode && context) {
552
748
gst_caps_set_simple (caps,
636
case CODEC_ID_MUSEPACK7:
833
case AV_CODEC_ID_MUSEPACK7:
638
gst_ff_aud_caps_new (context, codec_id, encode,
835
gst_ff_aud_caps_new (context, NULL, codec_id, encode,
639
836
"audio/x-ffmpeg-parsed-musepack", "streamversion", G_TYPE_INT, 7,
643
case CODEC_ID_MUSEPACK8:
840
case AV_CODEC_ID_MUSEPACK8:
645
gst_ff_aud_caps_new (context, codec_id, encode,
842
gst_ff_aud_caps_new (context, NULL, codec_id, encode,
646
843
"audio/x-ffmpeg-parsed-musepack", "streamversion", G_TYPE_INT, 8,
653
gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-ac3", NULL);
659
gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-eac3", NULL);
662
case CODEC_ID_TRUEHD:
664
gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-true-hd",
668
case CODEC_ID_ATRAC1:
670
gst_ff_aud_caps_new (context, codec_id, encode,
847
case AV_CODEC_ID_AC3:
850
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-ac3",
854
case AV_CODEC_ID_EAC3:
857
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-eac3",
861
case AV_CODEC_ID_TRUEHD:
863
gst_ff_aud_caps_new (context, NULL, codec_id, encode,
864
"audio/x-true-hd", NULL);
867
case AV_CODEC_ID_ATRAC1:
869
gst_ff_aud_caps_new (context, NULL, codec_id, encode,
671
870
"audio/x-vnd.sony.atrac1", NULL);
674
case CODEC_ID_ATRAC3:
873
case AV_CODEC_ID_ATRAC3:
676
gst_ff_aud_caps_new (context, codec_id, encode,
875
gst_ff_aud_caps_new (context, NULL, codec_id, encode,
677
876
"audio/x-vnd.sony.atrac3", NULL);
879
case AV_CODEC_ID_DTS:
682
gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-dts", NULL);
881
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-dts",
885
case AV_CODEC_ID_APE:
687
gst_ff_aud_caps_new (context, codec_id, encode,
887
gst_ff_aud_caps_new (context, NULL, codec_id, encode,
688
888
"audio/x-ffmpeg-parsed-ape", NULL);
690
890
gst_caps_set_simple (caps,
707
909
* sp5x is, but it's apparently something JPEG... We don't separate
708
910
* between those in GStreamer. Should we (at least between MJPEG,
709
911
* MJPEG-B and sp5x decoding...)? */
713
gst_ff_vid_caps_new (context, codec_id, encode, "image/jpeg", NULL);
718
gst_ff_vid_caps_new (context, codec_id, encode, "video/sp5x", NULL);
721
case CODEC_ID_MJPEGB:
723
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-mjpeg-b",
912
case AV_CODEC_ID_MJPEG:
913
case AV_CODEC_ID_LJPEG:
915
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "image/jpeg",
919
case AV_CODEC_ID_SP5X:
921
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/sp5x",
925
case AV_CODEC_ID_MJPEGB:
927
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
928
"video/x-mjpeg-b", NULL);
931
case AV_CODEC_ID_MPEG4:
728
932
if (encode && context != NULL) {
729
933
/* I'm not exactly sure what ffmpeg outputs... ffmpeg itself uses
730
934
* the AVI fourcc 'DIVX', but 'mp4v' for Quicktime... */
731
935
switch (context->codec_tag) {
732
936
case GST_MAKE_FOURCC ('D', 'I', 'V', 'X'):
734
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-divx",
735
"divxversion", G_TYPE_INT, 5, NULL);
938
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
939
"video/x-divx", "divxversion", G_TYPE_INT, 5, NULL);
737
941
case GST_MAKE_FOURCC ('m', 'p', '4', 'v'):
739
943
/* FIXME: bitrate */
740
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/mpeg",
741
"systemstream", G_TYPE_BOOLEAN, FALSE,
945
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
946
"video/mpeg", "systemstream", G_TYPE_BOOLEAN, FALSE,
742
947
"mpegversion", G_TYPE_INT, 4, NULL);
746
951
/* The trick here is to separate xvid, divx, mpeg4, 3ivx et al */
747
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/mpeg",
748
"mpegversion", G_TYPE_INT, 4,
749
"systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
953
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/mpeg",
954
"mpegversion", G_TYPE_INT, 4, "systemstream", G_TYPE_BOOLEAN, FALSE,
751
gst_caps_append (caps, gst_ff_vid_caps_new (context, codec_id, encode,
752
"video/x-divx", "divxversion", G_TYPE_INT, 5, NULL));
957
gst_caps_append (caps, gst_ff_vid_caps_new (context, NULL, codec_id,
958
encode, "video/x-divx", "divxversion", G_TYPE_INT, 5, NULL));
754
gst_caps_append (caps, gst_ff_vid_caps_new (context, codec_id, encode,
755
"video/x-divx", "divxversion", GST_TYPE_INT_RANGE, 4, 5,
757
gst_caps_append (caps, gst_ff_vid_caps_new (context, codec_id, encode,
758
"video/x-xvid", NULL));
759
gst_caps_append (caps, gst_ff_vid_caps_new (context, codec_id, encode,
760
"video/x-3ivx", NULL));
960
gst_caps_append (caps, gst_ff_vid_caps_new (context, NULL, codec_id,
961
encode, "video/x-divx", "divxversion", GST_TYPE_INT_RANGE, 4,
963
gst_caps_append (caps, gst_ff_vid_caps_new (context, NULL, codec_id,
964
encode, "video/x-xvid", NULL));
965
gst_caps_append (caps, gst_ff_vid_caps_new (context, NULL, codec_id,
966
encode, "video/x-3ivx", NULL));
765
case CODEC_ID_RAWVIDEO:
971
case AV_CODEC_ID_RAWVIDEO:
767
gst_ffmpeg_codectype_to_caps (AVMEDIA_TYPE_VIDEO, context, codec_id,
973
gst_ffmpeg_codectype_to_video_caps (context, codec_id, encode, NULL);
771
case CODEC_ID_MSMPEG4V1:
772
case CODEC_ID_MSMPEG4V2:
773
case CODEC_ID_MSMPEG4V3:
976
case AV_CODEC_ID_MSMPEG4V1:
977
case AV_CODEC_ID_MSMPEG4V2:
978
case AV_CODEC_ID_MSMPEG4V3:
775
gint version = 41 + codec_id - CODEC_ID_MSMPEG4V1;
980
gint version = 41 + codec_id - AV_CODEC_ID_MSMPEG4V1;
777
982
/* encode-FIXME: bitrate */
778
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-msmpeg",
779
"msmpegversion", G_TYPE_INT, version, NULL);
780
if (!encode && codec_id == CODEC_ID_MSMPEG4V3) {
781
gst_caps_append (caps, gst_ff_vid_caps_new (context, codec_id, encode,
782
"video/x-divx", "divxversion", G_TYPE_INT, 3, NULL));
984
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
985
"video/x-msmpeg", "msmpegversion", G_TYPE_INT, version, NULL);
986
if (!encode && codec_id == AV_CODEC_ID_MSMPEG4V3) {
987
gst_caps_append (caps, gst_ff_vid_caps_new (context, NULL, codec_id,
988
encode, "video/x-divx", "divxversion", G_TYPE_INT, 3, NULL));
993
case AV_CODEC_ID_WMV1:
994
case AV_CODEC_ID_WMV2:
790
gint version = (codec_id == CODEC_ID_WMV1) ? 1 : 2;
996
gint version = (codec_id == AV_CODEC_ID_WMV1) ? 1 : 2;
792
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-wmv",
999
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-wmv",
793
1000
"wmvversion", G_TYPE_INT, version, NULL);
1004
case AV_CODEC_ID_FLV1:
799
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-flash-video",
800
"flvversion", G_TYPE_INT, 1, NULL);
1006
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1007
"video/x-flash-video", "flvversion", G_TYPE_INT, 1, NULL);
804
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-svq",
1010
case AV_CODEC_ID_SVQ1:
1012
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-svq",
805
1013
"svqversion", G_TYPE_INT, 1, NULL);
809
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-svq",
1016
case AV_CODEC_ID_SVQ3:
1018
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-svq",
810
1019
"svqversion", G_TYPE_INT, 3, NULL);
813
case CODEC_ID_DVAUDIO:
1022
case AV_CODEC_ID_DVAUDIO:
815
gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-dv", NULL);
1024
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-dv",
818
case CODEC_ID_DVVIDEO:
1028
case AV_CODEC_ID_DVVIDEO:
820
1030
if (encode && context) {
821
1031
const gchar *format;
846
1056
format = "I420";
849
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-dv",
850
"systemstream", G_TYPE_BOOLEAN, FALSE,
851
"format", G_TYPE_STRING, format, NULL);
1060
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-dv",
1061
"systemstream", G_TYPE_BOOLEAN, FALSE, "format", G_TYPE_STRING,
853
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-dv",
1065
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-dv",
854
1066
"systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
1071
case AV_CODEC_ID_WMAV1:
1072
case AV_CODEC_ID_WMAV2:
862
gint version = (codec_id == CODEC_ID_WMAV1) ? 1 : 2;
1074
gint version = (codec_id == AV_CODEC_ID_WMAV1) ? 1 : 2;
865
caps = gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-wma",
866
"wmaversion", G_TYPE_INT, version,
867
"block_align", G_TYPE_INT, context->block_align,
868
"bitrate", G_TYPE_INT, context->bit_rate, NULL);
1078
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-wma",
1079
"wmaversion", G_TYPE_INT, version, "block_align", G_TYPE_INT,
1080
context->block_align, "bitrate", G_TYPE_INT, context->bit_rate,
870
caps = gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-wma",
871
"wmaversion", G_TYPE_INT, version,
872
"block_align", GST_TYPE_INT_RANGE, 0, G_MAXINT,
873
"bitrate", GST_TYPE_INT_RANGE, 0, G_MAXINT, NULL);
1084
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-wma",
1085
"wmaversion", G_TYPE_INT, version, "block_align",
1086
GST_TYPE_INT_RANGE, 0, G_MAXINT, "bitrate", GST_TYPE_INT_RANGE, 0,
877
case CODEC_ID_WMAPRO:
1091
case AV_CODEC_ID_WMAPRO:
879
caps = gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-wma",
1094
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-wma",
880
1095
"wmaversion", G_TYPE_INT, 3, NULL);
884
case CODEC_ID_WMAVOICE:
887
gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-wms", NULL);
894
gint version = (codec_id == CODEC_ID_MACE3) ? 3 : 6;
896
caps = gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-mace",
1098
case AV_CODEC_ID_WMALOSSLESS:
1100
/* libav only supports a depth of 16 at the moment */
1102
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-wma",
1103
"wmaversion", G_TYPE_INT, 4, "depth", G_TYPE_INT, 16, NULL);
1106
case AV_CODEC_ID_WMAVOICE:
1109
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-wms",
1114
case AV_CODEC_ID_MACE3:
1115
case AV_CODEC_ID_MACE6:
1117
gint version = (codec_id == AV_CODEC_ID_MACE3) ? 3 : 6;
1120
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-mace",
897
1121
"maceversion", G_TYPE_INT, version, NULL);
901
case CODEC_ID_HUFFYUV:
1125
case AV_CODEC_ID_HUFFYUV:
903
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-huffyuv",
1127
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1128
"video/x-huffyuv", NULL);
906
1130
gst_caps_set_simple (caps,
907
1131
"bpp", G_TYPE_INT, context->bits_per_coded_sample, NULL);
1135
case AV_CODEC_ID_CYUV:
913
gst_ff_vid_caps_new (context, codec_id, encode,
1137
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
914
1138
"video/x-compressed-yuv", NULL);
1141
case AV_CODEC_ID_H264:
919
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-h264",
1143
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-h264",
920
1144
"alignment", G_TYPE_STRING, "au", NULL);
923
case CODEC_ID_INDEO5:
924
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-indeo",
1147
case AV_CODEC_ID_INDEO5:
1149
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-indeo",
925
1150
"indeoversion", G_TYPE_INT, 5, NULL);
928
case CODEC_ID_INDEO4:
929
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-indeo",
1153
case AV_CODEC_ID_INDEO4:
1155
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-indeo",
930
1156
"indeoversion", G_TYPE_INT, 4, NULL);
933
case CODEC_ID_INDEO3:
934
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-indeo",
1159
case AV_CODEC_ID_INDEO3:
1161
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-indeo",
935
1162
"indeoversion", G_TYPE_INT, 3, NULL);
938
case CODEC_ID_INDEO2:
939
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-indeo",
1165
case AV_CODEC_ID_INDEO2:
1167
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-indeo",
940
1168
"indeoversion", G_TYPE_INT, 2, NULL);
943
case CODEC_ID_FLASHSV:
1171
case AV_CODEC_ID_FLASHSV:
945
gst_ff_vid_caps_new (context, codec_id, encode,
1173
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
946
1174
"video/x-flash-screen", NULL);
951
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-vp3", NULL);
956
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-vp5", NULL);
961
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-vp6", NULL);
966
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-vp6-flash",
972
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-vp6-alpha",
978
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-vp8", NULL);
981
case CODEC_ID_THEORA:
983
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-theora",
1177
case AV_CODEC_ID_VP3:
1179
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-vp3",
1183
case AV_CODEC_ID_VP5:
1185
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-vp5",
1189
case AV_CODEC_ID_VP6:
1191
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-vp6",
1195
case AV_CODEC_ID_VP6F:
1197
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1198
"video/x-vp6-flash", NULL);
1201
case AV_CODEC_ID_VP6A:
1203
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1204
"video/x-vp6-alpha", NULL);
1207
case AV_CODEC_ID_VP8:
1209
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-vp8",
1213
case AV_CODEC_ID_THEORA:
1215
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1216
"video/x-theora", NULL);
1219
case AV_CODEC_ID_AAC:
990
gst_ff_aud_caps_new (context, codec_id, encode, "audio/mpeg", NULL);
1222
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/mpeg",
993
1226
GValue arr = { 0, };
1031
case CODEC_ID_AAC_LATM: /* LATM/LOAS AAC syntax */
1032
caps = gst_ff_aud_caps_new (context, codec_id, encode, "audio/mpeg",
1264
case AV_CODEC_ID_AAC_LATM: /* LATM/LOAS AAC syntax */
1265
caps = gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/mpeg",
1033
1266
"mpegversion", G_TYPE_INT, 4, "stream-format", G_TYPE_STRING, "loas",
1038
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-asus",
1270
case AV_CODEC_ID_ASV1:
1272
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-asus",
1039
1273
"asusversion", G_TYPE_INT, 1, NULL);
1042
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-asus",
1275
case AV_CODEC_ID_ASV2:
1277
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-asus",
1043
1278
"asusversion", G_TYPE_INT, 2, NULL);
1047
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-ffv",
1281
case AV_CODEC_ID_FFV1:
1283
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-ffv",
1048
1284
"ffvversion", G_TYPE_INT, 1, NULL);
1053
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-4xm", NULL);
1056
case CODEC_ID_XAN_WC3:
1057
case CODEC_ID_XAN_WC4:
1058
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-xan",
1059
"wcversion", G_TYPE_INT, 3 - CODEC_ID_XAN_WC3 + codec_id, NULL);
1064
gst_ff_vid_caps_new (context, codec_id, encode,
1287
case AV_CODEC_ID_4XM:
1289
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-4xm",
1293
case AV_CODEC_ID_XAN_WC3:
1294
case AV_CODEC_ID_XAN_WC4:
1296
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-xan",
1297
"wcversion", G_TYPE_INT, 3 - AV_CODEC_ID_XAN_WC3 + codec_id, NULL);
1300
case AV_CODEC_ID_CLJR:
1302
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1065
1303
"video/x-cirrus-logic-accupak", NULL);
1068
case CODEC_ID_FRAPS:
1306
case AV_CODEC_ID_FRAPS:
1070
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-fraps",
1308
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-fraps",
1076
case CODEC_ID_INTERPLAY_VIDEO:
1312
case AV_CODEC_ID_MDEC:
1313
case AV_CODEC_ID_ROQ:
1314
case AV_CODEC_ID_INTERPLAY_VIDEO:
1077
1315
buildcaps = TRUE;
1081
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-ati-vcr",
1082
"vcrversion", G_TYPE_INT, 1, NULL);
1087
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-apple-video",
1091
case CODEC_ID_CINEPAK:
1093
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-cinepak",
1318
case AV_CODEC_ID_VCR1:
1320
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1321
"video/x-ati-vcr", "vcrversion", G_TYPE_INT, 1, NULL);
1324
case AV_CODEC_ID_RPZA:
1326
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1327
"video/x-apple-video", NULL);
1330
case AV_CODEC_ID_CINEPAK:
1332
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1333
"video/x-cinepak", NULL);
1097
1336
/* WS_VQA belogns here (order) */
1099
case CODEC_ID_MSRLE:
1100
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-rle",
1338
case AV_CODEC_ID_MSRLE:
1340
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-rle",
1101
1341
"layout", G_TYPE_STRING, "microsoft", NULL);
1103
1343
gst_caps_set_simple (caps,
1121
case CODEC_ID_MSVIDEO1:
1362
case AV_CODEC_ID_MSVIDEO1:
1123
gst_ff_vid_caps_new (context, codec_id, encode,
1364
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1124
1365
"video/x-msvideocodec", "msvideoversion", G_TYPE_INT, 1, NULL);
1128
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-wmv",
1129
"wmvversion", G_TYPE_INT, 3, NULL);
1368
case AV_CODEC_ID_WMV3:
1370
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-wmv",
1371
"wmvversion", G_TYPE_INT, 3, "format", G_TYPE_STRING, "WMV3", NULL);
1132
caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-wmv",
1373
case AV_CODEC_ID_VC1:
1375
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-wmv",
1133
1376
"wmvversion", G_TYPE_INT, 3, "format", G_TYPE_STRING, "WVC1", NULL);
1137
gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-qdm2", NULL);
1142
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-mszh", NULL);
1147
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-zlib", NULL);
1150
case CODEC_ID_TRUEMOTION1:
1152
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-truemotion",
1153
"trueversion", G_TYPE_INT, 1, NULL);
1155
case CODEC_ID_TRUEMOTION2:
1157
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-truemotion",
1158
"trueversion", G_TYPE_INT, 2, NULL);
1163
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-ultimotion",
1169
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-camtasia",
1378
case AV_CODEC_ID_QDM2:
1380
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-qdm2",
1384
case AV_CODEC_ID_MSZH:
1386
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-mszh",
1390
case AV_CODEC_ID_ZLIB:
1392
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-zlib",
1396
case AV_CODEC_ID_TRUEMOTION1:
1398
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1399
"video/x-truemotion", "trueversion", G_TYPE_INT, 1, NULL);
1401
case AV_CODEC_ID_TRUEMOTION2:
1403
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1404
"video/x-truemotion", "trueversion", G_TYPE_INT, 2, NULL);
1407
case AV_CODEC_ID_ULTI:
1409
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1410
"video/x-ultimotion", NULL);
1413
case AV_CODEC_ID_TSCC:
1415
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1416
"video/x-camtasia", NULL);
1172
1418
gst_caps_set_simple (caps,
1173
1419
"depth", G_TYPE_INT, (gint) context->bits_per_coded_sample, NULL);
1181
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-kmvc", NULL);
1186
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-nuv", NULL);
1190
caps = gst_ff_vid_caps_new (context, codec_id, encode, "image/gif", NULL);
1194
caps = gst_ff_vid_caps_new (context, codec_id, encode, "image/png", NULL);
1198
caps = gst_ff_vid_caps_new (context, codec_id, encode, "image/ppm", NULL);
1202
caps = gst_ff_vid_caps_new (context, codec_id, encode, "image/pbm", NULL);
1207
gst_ff_vid_caps_new (context, codec_id, encode,
1425
case AV_CODEC_ID_KMVC:
1427
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-kmvc",
1431
case AV_CODEC_ID_NUV:
1433
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-nuv",
1437
case AV_CODEC_ID_GIF:
1439
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "image/gif",
1443
case AV_CODEC_ID_PNG:
1445
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "image/png",
1449
case AV_CODEC_ID_PPM:
1451
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "image/ppm",
1455
case AV_CODEC_ID_PBM:
1457
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "image/pbm",
1461
case AV_CODEC_ID_PAM:
1463
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1208
1464
"image/x-portable-anymap", NULL);
1467
case AV_CODEC_ID_PGM:
1213
gst_ff_vid_caps_new (context, codec_id, encode,
1469
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1214
1470
"image/x-portable-graymap", NULL);
1219
gst_ff_vid_caps_new (context, codec_id, encode, "image/x-pcx", NULL);
1224
gst_ff_vid_caps_new (context, codec_id, encode, "image/x-sgi", NULL);
1227
case CODEC_ID_TARGA:
1229
gst_ff_vid_caps_new (context, codec_id, encode, "image/x-tga", NULL);
1234
gst_ff_vid_caps_new (context, codec_id, encode, "image/tiff", NULL);
1237
case CODEC_ID_SUNRAST:
1239
gst_ff_vid_caps_new (context, codec_id, encode, "image/x-sun-raster",
1245
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-smc", NULL);
1248
case CODEC_ID_QDRAW:
1250
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-qdrw", NULL);
1253
case CODEC_ID_DNXHD:
1255
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-dnxhd",
1259
case CODEC_ID_PRORES:
1261
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-prores",
1265
case CODEC_ID_MIMIC:
1267
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-mimic",
1273
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-vmnc", NULL);
1276
case CODEC_ID_TRUESPEECH:
1278
gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-truespeech",
1282
case CODEC_ID_QCELP:
1284
gst_ff_aud_caps_new (context, codec_id, encode, "audio/qcelp", NULL);
1289
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-amv", NULL);
1294
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-aasc", NULL);
1299
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-loco", NULL);
1304
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-zmbv", NULL);
1307
case CODEC_ID_LAGARITH:
1309
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-lagarith",
1315
gst_ff_vid_caps_new (context, codec_id, encode, "video/x-camstudio",
1473
case AV_CODEC_ID_PCX:
1475
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "image/x-pcx",
1479
case AV_CODEC_ID_SGI:
1481
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "image/x-sgi",
1485
case AV_CODEC_ID_TARGA:
1487
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "image/x-tga",
1491
case AV_CODEC_ID_TIFF:
1493
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "image/tiff",
1497
case AV_CODEC_ID_SUNRAST:
1499
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1500
"image/x-sun-raster", NULL);
1503
case AV_CODEC_ID_SMC:
1505
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-smc",
1509
case AV_CODEC_ID_QDRAW:
1511
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-qdrw",
1515
case AV_CODEC_ID_DNXHD:
1517
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-dnxhd",
1521
case AV_CODEC_ID_PRORES:
1523
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1524
"video/x-prores", NULL);
1527
case AV_CODEC_ID_MIMIC:
1529
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-mimic",
1533
case AV_CODEC_ID_VMNC:
1535
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-vmnc",
1539
case AV_CODEC_ID_TRUESPEECH:
1541
gst_ff_aud_caps_new (context, NULL, codec_id, encode,
1542
"audio/x-truespeech", NULL);
1545
case AV_CODEC_ID_QCELP:
1547
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/qcelp",
1551
case AV_CODEC_ID_AMV:
1553
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-amv",
1557
case AV_CODEC_ID_AASC:
1559
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-aasc",
1563
case AV_CODEC_ID_LOCO:
1565
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-loco",
1569
case AV_CODEC_ID_ZMBV:
1571
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-zmbv",
1575
case AV_CODEC_ID_LAGARITH:
1577
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1578
"video/x-lagarith", NULL);
1581
case AV_CODEC_ID_CSCD:
1583
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
1584
"video/x-camstudio", NULL);
1318
1586
gst_caps_set_simple (caps,
1319
1587
"depth", G_TYPE_INT, (gint) context->bits_per_coded_sample, NULL);
1382
caps = gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-raw",
1649
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-raw",
1383
1650
"format", G_TYPE_STRING, gst_audio_format_to_string (format),
1384
1651
"layout", G_TYPE_STRING, "interleaved", NULL);
1388
case CODEC_ID_PCM_MULAW:
1390
gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-mulaw",
1394
case CODEC_ID_PCM_ALAW:
1396
gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-alaw", NULL);
1399
case CODEC_ID_ADPCM_G722:
1401
gst_ff_aud_caps_new (context, codec_id, encode, "audio/G722", NULL);
1655
case AV_CODEC_ID_PCM_MULAW:
1657
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-mulaw",
1661
case AV_CODEC_ID_PCM_ALAW:
1663
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-alaw",
1667
case AV_CODEC_ID_ADPCM_G722:
1669
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/G722",
1403
1672
gst_caps_set_simple (caps,
1404
1673
"block_align", G_TYPE_INT, context->block_align,
1405
1674
"bitrate", G_TYPE_INT, context->bit_rate, NULL);
1408
case CODEC_ID_ADPCM_G726:
1677
case AV_CODEC_ID_ADPCM_G726:
1410
1679
/* the G726 decoder can also handle G721 */
1411
caps = gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-adpcm",
1681
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-adpcm",
1412
1682
"layout", G_TYPE_STRING, "g726", NULL);
1414
1684
gst_caps_set_simple (caps,
1425
case CODEC_ID_ADPCM_IMA_QT:
1426
case CODEC_ID_ADPCM_IMA_WAV:
1427
case CODEC_ID_ADPCM_IMA_DK3:
1428
case CODEC_ID_ADPCM_IMA_DK4:
1429
case CODEC_ID_ADPCM_IMA_WS:
1430
case CODEC_ID_ADPCM_IMA_SMJPEG:
1431
case CODEC_ID_ADPCM_IMA_AMV:
1432
case CODEC_ID_ADPCM_IMA_ISS:
1433
case CODEC_ID_ADPCM_IMA_EA_EACS:
1434
case CODEC_ID_ADPCM_IMA_EA_SEAD:
1435
case CODEC_ID_ADPCM_MS:
1436
case CODEC_ID_ADPCM_4XM:
1437
case CODEC_ID_ADPCM_XA:
1438
case CODEC_ID_ADPCM_ADX:
1439
case CODEC_ID_ADPCM_EA:
1440
case CODEC_ID_ADPCM_CT:
1441
case CODEC_ID_ADPCM_SWF:
1442
case CODEC_ID_ADPCM_YAMAHA:
1443
case CODEC_ID_ADPCM_SBPRO_2:
1444
case CODEC_ID_ADPCM_SBPRO_3:
1445
case CODEC_ID_ADPCM_SBPRO_4:
1446
case CODEC_ID_ADPCM_EA_R1:
1447
case CODEC_ID_ADPCM_EA_R2:
1448
case CODEC_ID_ADPCM_EA_R3:
1449
case CODEC_ID_ADPCM_EA_MAXIS_XA:
1450
case CODEC_ID_ADPCM_EA_XAS:
1451
case CODEC_ID_ADPCM_THP:
1695
case AV_CODEC_ID_ADPCM_IMA_QT:
1696
case AV_CODEC_ID_ADPCM_IMA_WAV:
1697
case AV_CODEC_ID_ADPCM_IMA_DK3:
1698
case AV_CODEC_ID_ADPCM_IMA_DK4:
1699
case AV_CODEC_ID_ADPCM_IMA_WS:
1700
case AV_CODEC_ID_ADPCM_IMA_SMJPEG:
1701
case AV_CODEC_ID_ADPCM_IMA_AMV:
1702
case AV_CODEC_ID_ADPCM_IMA_ISS:
1703
case AV_CODEC_ID_ADPCM_IMA_EA_EACS:
1704
case AV_CODEC_ID_ADPCM_IMA_EA_SEAD:
1705
case AV_CODEC_ID_ADPCM_MS:
1706
case AV_CODEC_ID_ADPCM_4XM:
1707
case AV_CODEC_ID_ADPCM_XA:
1708
case AV_CODEC_ID_ADPCM_ADX:
1709
case AV_CODEC_ID_ADPCM_EA:
1710
case AV_CODEC_ID_ADPCM_CT:
1711
case AV_CODEC_ID_ADPCM_SWF:
1712
case AV_CODEC_ID_ADPCM_YAMAHA:
1713
case AV_CODEC_ID_ADPCM_SBPRO_2:
1714
case AV_CODEC_ID_ADPCM_SBPRO_3:
1715
case AV_CODEC_ID_ADPCM_SBPRO_4:
1716
case AV_CODEC_ID_ADPCM_EA_R1:
1717
case AV_CODEC_ID_ADPCM_EA_R2:
1718
case AV_CODEC_ID_ADPCM_EA_R3:
1719
case AV_CODEC_ID_ADPCM_EA_MAXIS_XA:
1720
case AV_CODEC_ID_ADPCM_EA_XAS:
1721
case AV_CODEC_ID_ADPCM_THP:
1453
1723
const gchar *layout = NULL;
1455
1725
switch (codec_id) {
1456
case CODEC_ID_ADPCM_IMA_QT:
1726
case AV_CODEC_ID_ADPCM_IMA_QT:
1457
1727
layout = "quicktime";
1459
case CODEC_ID_ADPCM_IMA_WAV:
1729
case AV_CODEC_ID_ADPCM_IMA_WAV:
1460
1730
layout = "dvi";
1462
case CODEC_ID_ADPCM_IMA_DK3:
1732
case AV_CODEC_ID_ADPCM_IMA_DK3:
1463
1733
layout = "dk3";
1465
case CODEC_ID_ADPCM_IMA_DK4:
1735
case AV_CODEC_ID_ADPCM_IMA_DK4:
1466
1736
layout = "dk4";
1468
case CODEC_ID_ADPCM_IMA_WS:
1738
case AV_CODEC_ID_ADPCM_IMA_WS:
1469
1739
layout = "westwood";
1471
case CODEC_ID_ADPCM_IMA_SMJPEG:
1741
case AV_CODEC_ID_ADPCM_IMA_SMJPEG:
1472
1742
layout = "smjpeg";
1474
case CODEC_ID_ADPCM_IMA_AMV:
1744
case AV_CODEC_ID_ADPCM_IMA_AMV:
1475
1745
layout = "amv";
1477
case CODEC_ID_ADPCM_IMA_ISS:
1747
case AV_CODEC_ID_ADPCM_IMA_ISS:
1478
1748
layout = "iss";
1480
case CODEC_ID_ADPCM_IMA_EA_EACS:
1750
case AV_CODEC_ID_ADPCM_IMA_EA_EACS:
1481
1751
layout = "ea-eacs";
1483
case CODEC_ID_ADPCM_IMA_EA_SEAD:
1753
case AV_CODEC_ID_ADPCM_IMA_EA_SEAD:
1484
1754
layout = "ea-sead";
1486
case CODEC_ID_ADPCM_MS:
1756
case AV_CODEC_ID_ADPCM_MS:
1487
1757
layout = "microsoft";
1489
case CODEC_ID_ADPCM_4XM:
1759
case AV_CODEC_ID_ADPCM_4XM:
1490
1760
layout = "4xm";
1492
case CODEC_ID_ADPCM_XA:
1762
case AV_CODEC_ID_ADPCM_XA:
1495
case CODEC_ID_ADPCM_ADX:
1765
case AV_CODEC_ID_ADPCM_ADX:
1496
1766
layout = "adx";
1498
case CODEC_ID_ADPCM_EA:
1768
case AV_CODEC_ID_ADPCM_EA:
1501
case CODEC_ID_ADPCM_CT:
1771
case AV_CODEC_ID_ADPCM_CT:
1504
case CODEC_ID_ADPCM_SWF:
1774
case AV_CODEC_ID_ADPCM_SWF:
1505
1775
layout = "swf";
1507
case CODEC_ID_ADPCM_YAMAHA:
1777
case AV_CODEC_ID_ADPCM_YAMAHA:
1508
1778
layout = "yamaha";
1510
case CODEC_ID_ADPCM_SBPRO_2:
1780
case AV_CODEC_ID_ADPCM_SBPRO_2:
1511
1781
layout = "sbpro2";
1513
case CODEC_ID_ADPCM_SBPRO_3:
1783
case AV_CODEC_ID_ADPCM_SBPRO_3:
1514
1784
layout = "sbpro3";
1516
case CODEC_ID_ADPCM_SBPRO_4:
1786
case AV_CODEC_ID_ADPCM_SBPRO_4:
1517
1787
layout = "sbpro4";
1519
case CODEC_ID_ADPCM_EA_R1:
1789
case AV_CODEC_ID_ADPCM_EA_R1:
1520
1790
layout = "ea-r1";
1522
case CODEC_ID_ADPCM_EA_R2:
1525
case CODEC_ID_ADPCM_EA_R3:
1528
case CODEC_ID_ADPCM_EA_MAXIS_XA:
1792
case AV_CODEC_ID_ADPCM_EA_R2:
1795
case AV_CODEC_ID_ADPCM_EA_R3:
1798
case AV_CODEC_ID_ADPCM_EA_MAXIS_XA:
1529
1799
layout = "ea-maxis-xa";
1531
case CODEC_ID_ADPCM_EA_XAS:
1801
case AV_CODEC_ID_ADPCM_EA_XAS:
1532
1802
layout = "ea-xas";
1534
case CODEC_ID_ADPCM_THP:
1804
case AV_CODEC_ID_ADPCM_THP:
1535
1805
layout = "thp";
1553
case CODEC_ID_AMR_NB:
1554
caps = gst_ff_aud_caps_new (context, codec_id, encode, "audio/AMR", NULL);
1557
case CODEC_ID_AMR_WB:
1559
gst_ff_aud_caps_new (context, codec_id, encode, "audio/AMR-WB", NULL);
1564
gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-gsm", NULL);
1567
case CODEC_ID_GSM_MS:
1569
gst_ff_aud_caps_new (context, codec_id, encode, "audio/ms-gsm", NULL);
1572
case CODEC_ID_NELLYMOSER:
1574
gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-nellymoser",
1824
case AV_CODEC_ID_AMR_NB:
1826
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/AMR",
1830
case AV_CODEC_ID_AMR_WB:
1832
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/AMR-WB",
1836
case AV_CODEC_ID_GSM:
1838
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-gsm",
1842
case AV_CODEC_ID_GSM_MS:
1844
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/ms-gsm",
1848
case AV_CODEC_ID_NELLYMOSER:
1850
gst_ff_aud_caps_new (context, NULL, codec_id, encode,
1851
"audio/x-nellymoser", NULL);
1854
case AV_CODEC_ID_SIPR:
1581
gst_ff_aud_caps_new (context, codec_id, encode, "audio/x-sipro",
1857
gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-sipro",
1584
1860
gst_caps_set_simple (caps,
1790
/* Convert a FFMPEG Sample Format and optional AVCodecContext
1791
* to a GstCaps. If the context is ommitted, no fixed values
1792
* for video/audio size will be included in the GstCaps
1794
* See below for usefullness
1798
gst_ffmpeg_smpfmt_to_caps (enum AVSampleFormat sample_fmt,
1799
AVCodecContext * context, enum CodecID codec_id)
2071
gst_ffmpeg_smpfmt_to_audioformat (enum AVSampleFormat sample_fmt)
1801
GstCaps *caps = NULL;
1802
GstAudioFormat format;
1804
2073
switch (sample_fmt) {
2074
case AV_SAMPLE_FMT_U8:
2075
case AV_SAMPLE_FMT_U8P:
2076
return GST_AUDIO_FORMAT_U8;
1805
2078
case AV_SAMPLE_FMT_S16:
1806
format = GST_AUDIO_FORMAT_S16;
2079
case AV_SAMPLE_FMT_S16P:
2080
return GST_AUDIO_FORMAT_S16;
1808
2082
case AV_SAMPLE_FMT_S32:
1809
format = GST_AUDIO_FORMAT_S32;
2083
case AV_SAMPLE_FMT_S32P:
2084
return GST_AUDIO_FORMAT_S32;
1811
2086
case AV_SAMPLE_FMT_FLT:
1812
format = GST_AUDIO_FORMAT_F32;
2087
case AV_SAMPLE_FMT_FLTP:
2088
return GST_AUDIO_FORMAT_F32;
1814
2090
case AV_SAMPLE_FMT_DBL:
1815
format = GST_AUDIO_FORMAT_F64;
2091
case AV_SAMPLE_FMT_DBLP:
2092
return GST_AUDIO_FORMAT_F64;
1819
format = GST_AUDIO_FORMAT_UNKNOWN;
2096
return GST_AUDIO_FORMAT_UNKNOWN;
2101
/* Convert a FFMPEG Sample Format and optional AVCodecContext
2102
* to a GstCaps. If the context is ommitted, no fixed values
2103
* for video/audio size will be included in the GstCaps
2105
* See below for usefullness
2109
gst_ffmpeg_smpfmt_to_caps (enum AVSampleFormat sample_fmt,
2110
AVCodecContext * context, AVCodec * codec, enum CodecID codec_id)
2112
GstCaps *caps = NULL;
2113
GstAudioFormat format;
2115
format = gst_ffmpeg_smpfmt_to_audioformat (sample_fmt);
1823
2117
if (format != GST_AUDIO_FORMAT_UNKNOWN) {
1824
caps = gst_ff_aud_caps_new (context, codec_id, TRUE, "audio/x-raw",
2118
caps = gst_ff_aud_caps_new (context, codec, codec_id, TRUE, "audio/x-raw",
1825
2119
"format", G_TYPE_STRING, gst_audio_format_to_string (format),
1826
2120
"layout", G_TYPE_STRING, "interleaved", NULL);
1827
2121
GST_LOG ("caps for sample_fmt=%d: %" GST_PTR_FORMAT, sample_fmt, caps);
2230
2490
gst_ffmpeg_videoformat_to_pixfmt (GST_VIDEO_INFO_FORMAT (info));
2494
gst_ffmpeg_audioinfo_to_context (GstAudioInfo * info, AVCodecContext * context)
2496
const AVCodec *codec;
2497
const enum AVSampleFormat *smpl_fmts;
2498
enum AVSampleFormat smpl_fmt = -1;
2500
context->channels = info->channels;
2501
context->sample_rate = info->rate;
2502
context->channel_layout =
2503
gst_ffmpeg_channel_positions_to_layout (info->position, info->channels);
2505
codec = context->codec;
2507
smpl_fmts = codec->sample_fmts;
2509
switch (info->finfo->format) {
2510
case GST_AUDIO_FORMAT_F32:
2512
while (*smpl_fmts != -1) {
2513
if (*smpl_fmts == AV_SAMPLE_FMT_FLT) {
2514
smpl_fmt = *smpl_fmts;
2516
} else if (*smpl_fmts == AV_SAMPLE_FMT_FLTP) {
2517
smpl_fmt = *smpl_fmts;
2523
smpl_fmt = AV_SAMPLE_FMT_FLT;
2526
case GST_AUDIO_FORMAT_F64:
2528
while (*smpl_fmts != -1) {
2529
if (*smpl_fmts == AV_SAMPLE_FMT_DBL) {
2530
smpl_fmt = *smpl_fmts;
2532
} else if (*smpl_fmts == AV_SAMPLE_FMT_DBLP) {
2533
smpl_fmt = *smpl_fmts;
2539
smpl_fmt = AV_SAMPLE_FMT_DBL;
2542
case GST_AUDIO_FORMAT_S32:
2544
while (*smpl_fmts != -1) {
2545
if (*smpl_fmts == AV_SAMPLE_FMT_S32) {
2546
smpl_fmt = *smpl_fmts;
2548
} else if (*smpl_fmts == AV_SAMPLE_FMT_S32P) {
2549
smpl_fmt = *smpl_fmts;
2555
smpl_fmt = AV_SAMPLE_FMT_S32;
2558
case GST_AUDIO_FORMAT_S16:
2560
while (*smpl_fmts != -1) {
2561
if (*smpl_fmts == AV_SAMPLE_FMT_S16) {
2562
smpl_fmt = *smpl_fmts;
2564
} else if (*smpl_fmts == AV_SAMPLE_FMT_S16P) {
2565
smpl_fmt = *smpl_fmts;
2571
smpl_fmt = AV_SAMPLE_FMT_S16;
2574
case GST_AUDIO_FORMAT_U8:
2576
while (*smpl_fmts != -1) {
2577
if (*smpl_fmts == AV_SAMPLE_FMT_U8) {
2578
smpl_fmt = *smpl_fmts;
2580
} else if (*smpl_fmts == AV_SAMPLE_FMT_U8P) {
2581
smpl_fmt = *smpl_fmts;
2587
smpl_fmt = AV_SAMPLE_FMT_U8;
2594
g_assert (smpl_fmt != -1);
2596
context->sample_fmt = smpl_fmt;
2233
2599
/* Convert a GstCaps and a FFMPEG codec Type to a
2234
2600
* AVCodecContext. If the context is ommitted, no fixed values
2235
2601
* for video/audio size will be included in the context
2731
3098
AVOutputFormat * plugin)
2733
3100
static enum CodecID tmp_vlist[] = {
2737
3104
static enum CodecID tmp_alist[] = {
2742
3109
GST_LOG ("format_name : %s", format_name);
2744
3111
if (!strcmp (format_name, "mp4")) {
2745
3112
static enum CodecID mp4_video_list[] = {
2746
CODEC_ID_MPEG4, CODEC_ID_H264,
3113
AV_CODEC_ID_MPEG4, AV_CODEC_ID_H264,
2750
3117
static enum CodecID mp4_audio_list[] = {
2751
CODEC_ID_AAC, CODEC_ID_MP3,
3118
AV_CODEC_ID_AAC, AV_CODEC_ID_MP3,
2755
3122
*video_codec_list = mp4_video_list;
2756
3123
*audio_codec_list = mp4_audio_list;
2757
3124
} else if (!strcmp (format_name, "mpeg")) {
2758
static enum CodecID mpeg_video_list[] = { CODEC_ID_MPEG1VIDEO,
2759
CODEC_ID_MPEG2VIDEO,
3125
static enum CodecID mpeg_video_list[] = { AV_CODEC_ID_MPEG1VIDEO,
3126
AV_CODEC_ID_MPEG2VIDEO,
2763
static enum CodecID mpeg_audio_list[] = { CODEC_ID_MP1,
3130
static enum CodecID mpeg_audio_list[] = { AV_CODEC_ID_MP1,
2769
3136
*video_codec_list = mpeg_video_list;
2770
3137
*audio_codec_list = mpeg_audio_list;
2771
3138
} else if (!strcmp (format_name, "dvd")) {
2772
static enum CodecID mpeg_video_list[] = { CODEC_ID_MPEG2VIDEO,
3139
static enum CodecID mpeg_video_list[] = { AV_CODEC_ID_MPEG2VIDEO,
2775
static enum CodecID mpeg_audio_list[] = { CODEC_ID_MP2,
3142
static enum CodecID mpeg_audio_list[] = { AV_CODEC_ID_MP2,
3145
AV_CODEC_ID_PCM_S16BE,
2782
3149
*video_codec_list = mpeg_video_list;
2783
3150
*audio_codec_list = mpeg_audio_list;
2784
3151
} else if (!strcmp (format_name, "mpegts")) {
2785
static enum CodecID mpegts_video_list[] = { CODEC_ID_MPEG1VIDEO,
2786
CODEC_ID_MPEG2VIDEO,
3152
static enum CodecID mpegts_video_list[] = { AV_CODEC_ID_MPEG1VIDEO,
3153
AV_CODEC_ID_MPEG2VIDEO,
2790
static enum CodecID mpegts_audio_list[] = { CODEC_ID_MP2,
3157
static enum CodecID mpegts_audio_list[] = { AV_CODEC_ID_MP2,
2798
3165
*video_codec_list = mpegts_video_list;
2799
3166
*audio_codec_list = mpegts_audio_list;
2800
3167
} else if (!strcmp (format_name, "vob")) {
2801
3168
static enum CodecID vob_video_list[] =
2802
{ CODEC_ID_MPEG2VIDEO, CODEC_ID_NONE };
2803
static enum CodecID vob_audio_list[] = { CODEC_ID_MP2, CODEC_ID_AC3,
2804
CODEC_ID_DTS, CODEC_ID_NONE
3169
{ AV_CODEC_ID_MPEG2VIDEO, AV_CODEC_ID_NONE };
3170
static enum CodecID vob_audio_list[] = { AV_CODEC_ID_MP2, AV_CODEC_ID_AC3,
3171
AV_CODEC_ID_DTS, AV_CODEC_ID_NONE
2807
3174
*video_codec_list = vob_video_list;
2808
3175
*audio_codec_list = vob_audio_list;
2809
3176
} else if (!strcmp (format_name, "flv")) {
2810
static enum CodecID flv_video_list[] = { CODEC_ID_FLV1, CODEC_ID_NONE };
2811
static enum CodecID flv_audio_list[] = { CODEC_ID_MP3, CODEC_ID_NONE };
3177
static enum CodecID flv_video_list[] =
3178
{ AV_CODEC_ID_FLV1, AV_CODEC_ID_NONE };
3179
static enum CodecID flv_audio_list[] =
3180
{ AV_CODEC_ID_MP3, AV_CODEC_ID_NONE };
2813
3182
*video_codec_list = flv_video_list;
2814
3183
*audio_codec_list = flv_audio_list;
2815
3184
} else if (!strcmp (format_name, "asf")) {
2816
3185
static enum CodecID asf_video_list[] =
2817
{ CODEC_ID_WMV1, CODEC_ID_WMV2, CODEC_ID_MSMPEG4V3, CODEC_ID_NONE };
3186
{ AV_CODEC_ID_WMV1, AV_CODEC_ID_WMV2, AV_CODEC_ID_MSMPEG4V3,
2818
3189
static enum CodecID asf_audio_list[] =
2819
{ CODEC_ID_WMAV1, CODEC_ID_WMAV2, CODEC_ID_MP3, CODEC_ID_NONE };
3190
{ AV_CODEC_ID_WMAV1, AV_CODEC_ID_WMAV2, AV_CODEC_ID_MP3,
2821
3194
*video_codec_list = asf_video_list;
2822
3195
*audio_codec_list = asf_audio_list;
2823
3196
} else if (!strcmp (format_name, "dv")) {
2824
static enum CodecID dv_video_list[] = { CODEC_ID_DVVIDEO, CODEC_ID_NONE };
2825
static enum CodecID dv_audio_list[] = { CODEC_ID_PCM_S16LE, CODEC_ID_NONE };
3197
static enum CodecID dv_video_list[] =
3198
{ AV_CODEC_ID_DVVIDEO, AV_CODEC_ID_NONE };
3199
static enum CodecID dv_audio_list[] =
3200
{ AV_CODEC_ID_PCM_S16LE, AV_CODEC_ID_NONE };
2827
3202
*video_codec_list = dv_video_list;
2828
3203
*audio_codec_list = dv_audio_list;
2829
3204
} else if (!strcmp (format_name, "mov")) {
2830
3205
static enum CodecID mov_video_list[] = {
2831
CODEC_ID_SVQ1, CODEC_ID_SVQ3, CODEC_ID_MPEG4,
2832
CODEC_ID_H263, CODEC_ID_H263P,
2833
CODEC_ID_H264, CODEC_ID_DVVIDEO,
3206
AV_CODEC_ID_SVQ1, AV_CODEC_ID_SVQ3, AV_CODEC_ID_MPEG4,
3207
AV_CODEC_ID_H263, AV_CODEC_ID_H263P,
3208
AV_CODEC_ID_H264, AV_CODEC_ID_DVVIDEO,
2837
3212
static enum CodecID mov_audio_list[] = {
2838
CODEC_ID_PCM_MULAW, CODEC_ID_PCM_ALAW, CODEC_ID_ADPCM_IMA_QT,
2839
CODEC_ID_MACE3, CODEC_ID_MACE6, CODEC_ID_AAC,
2840
CODEC_ID_AMR_NB, CODEC_ID_AMR_WB,
2841
CODEC_ID_PCM_S16BE, CODEC_ID_PCM_S16LE,
2842
CODEC_ID_MP3, CODEC_ID_NONE
3213
AV_CODEC_ID_PCM_MULAW, AV_CODEC_ID_PCM_ALAW, AV_CODEC_ID_ADPCM_IMA_QT,
3214
AV_CODEC_ID_MACE3, AV_CODEC_ID_MACE6, AV_CODEC_ID_AAC,
3215
AV_CODEC_ID_AMR_NB, AV_CODEC_ID_AMR_WB,
3216
AV_CODEC_ID_PCM_S16BE, AV_CODEC_ID_PCM_S16LE,
3217
AV_CODEC_ID_MP3, AV_CODEC_ID_NONE
2845
3220
*video_codec_list = mov_video_list;
2846
3221
*audio_codec_list = mov_audio_list;
2847
3222
} else if ((!strcmp (format_name, "3gp") || !strcmp (format_name, "3g2"))) {
2848
3223
static enum CodecID tgp_video_list[] = {
2849
CODEC_ID_MPEG4, CODEC_ID_H263, CODEC_ID_H263P, CODEC_ID_H264,
3224
AV_CODEC_ID_MPEG4, AV_CODEC_ID_H263, AV_CODEC_ID_H263P, AV_CODEC_ID_H264,
2852
3227
static enum CodecID tgp_audio_list[] = {
2853
CODEC_ID_AMR_NB, CODEC_ID_AMR_WB,
3228
AV_CODEC_ID_AMR_NB, AV_CODEC_ID_AMR_WB,
2858
3233
*video_codec_list = tgp_video_list;
2859
3234
*audio_codec_list = tgp_audio_list;
2860
3235
} else if (!strcmp (format_name, "mmf")) {
2861
3236
static enum CodecID mmf_audio_list[] = {
2862
CODEC_ID_ADPCM_YAMAHA, CODEC_ID_NONE
3237
AV_CODEC_ID_ADPCM_YAMAHA, AV_CODEC_ID_NONE
2864
3239
*video_codec_list = NULL;
2865
3240
*audio_codec_list = mmf_audio_list;
2866
3241
} else if (!strcmp (format_name, "amr")) {
2867
3242
static enum CodecID amr_audio_list[] = {
2868
CODEC_ID_AMR_NB, CODEC_ID_AMR_WB,
3243
AV_CODEC_ID_AMR_NB, AV_CODEC_ID_AMR_WB,
2871
3246
*video_codec_list = NULL;
2872
3247
*audio_codec_list = amr_audio_list;
2873
3248
} else if (!strcmp (format_name, "gif")) {
2874
3249
static enum CodecID gif_image_list[] = {
2875
CODEC_ID_RAWVIDEO, CODEC_ID_NONE
3250
AV_CODEC_ID_RAWVIDEO, AV_CODEC_ID_NONE
2877
3252
*video_codec_list = gif_image_list;
2878
3253
*audio_codec_list = NULL;
2879
} else if ((plugin->audio_codec != CODEC_ID_NONE) ||
2880
(plugin->video_codec != CODEC_ID_NONE)) {
3254
} else if ((plugin->audio_codec != AV_CODEC_ID_NONE) ||
3255
(plugin->video_codec != AV_CODEC_ID_NONE)) {
2881
3256
tmp_vlist[0] = plugin->video_codec;
2882
3257
tmp_alist[0] = plugin->audio_codec;
3243
3618
if (layout == NULL) {
3245
3620
} else if (!strcmp (layout, "quicktime")) {
3246
id = CODEC_ID_ADPCM_IMA_QT;
3621
id = AV_CODEC_ID_ADPCM_IMA_QT;
3247
3622
} else if (!strcmp (layout, "microsoft")) {
3248
id = CODEC_ID_ADPCM_MS;
3623
id = AV_CODEC_ID_ADPCM_MS;
3249
3624
} else if (!strcmp (layout, "dvi")) {
3250
id = CODEC_ID_ADPCM_IMA_WAV;
3625
id = AV_CODEC_ID_ADPCM_IMA_WAV;
3251
3626
} else if (!strcmp (layout, "4xm")) {
3252
id = CODEC_ID_ADPCM_4XM;
3627
id = AV_CODEC_ID_ADPCM_4XM;
3253
3628
} else if (!strcmp (layout, "smjpeg")) {
3254
id = CODEC_ID_ADPCM_IMA_SMJPEG;
3629
id = AV_CODEC_ID_ADPCM_IMA_SMJPEG;
3255
3630
} else if (!strcmp (layout, "dk3")) {
3256
id = CODEC_ID_ADPCM_IMA_DK3;
3631
id = AV_CODEC_ID_ADPCM_IMA_DK3;
3257
3632
} else if (!strcmp (layout, "dk4")) {
3258
id = CODEC_ID_ADPCM_IMA_DK4;
3633
id = AV_CODEC_ID_ADPCM_IMA_DK4;
3259
3634
} else if (!strcmp (layout, "westwood")) {
3260
id = CODEC_ID_ADPCM_IMA_WS;
3635
id = AV_CODEC_ID_ADPCM_IMA_WS;
3261
3636
} else if (!strcmp (layout, "iss")) {
3262
id = CODEC_ID_ADPCM_IMA_ISS;
3637
id = AV_CODEC_ID_ADPCM_IMA_ISS;
3263
3638
} else if (!strcmp (layout, "xa")) {
3264
id = CODEC_ID_ADPCM_XA;
3639
id = AV_CODEC_ID_ADPCM_XA;
3265
3640
} else if (!strcmp (layout, "adx")) {
3266
id = CODEC_ID_ADPCM_ADX;
3641
id = AV_CODEC_ID_ADPCM_ADX;
3267
3642
} else if (!strcmp (layout, "ea")) {
3268
id = CODEC_ID_ADPCM_EA;
3643
id = AV_CODEC_ID_ADPCM_EA;
3269
3644
} else if (!strcmp (layout, "g726")) {
3270
id = CODEC_ID_ADPCM_G726;
3645
id = AV_CODEC_ID_ADPCM_G726;
3271
3646
} else if (!strcmp (layout, "g721")) {
3272
id = CODEC_ID_ADPCM_G726;
3647
id = AV_CODEC_ID_ADPCM_G726;
3273
3648
} else if (!strcmp (layout, "ct")) {
3274
id = CODEC_ID_ADPCM_CT;
3649
id = AV_CODEC_ID_ADPCM_CT;
3275
3650
} else if (!strcmp (layout, "swf")) {
3276
id = CODEC_ID_ADPCM_SWF;
3651
id = AV_CODEC_ID_ADPCM_SWF;
3277
3652
} else if (!strcmp (layout, "yamaha")) {
3278
id = CODEC_ID_ADPCM_YAMAHA;
3653
id = AV_CODEC_ID_ADPCM_YAMAHA;
3279
3654
} else if (!strcmp (layout, "sbpro2")) {
3280
id = CODEC_ID_ADPCM_SBPRO_2;
3655
id = AV_CODEC_ID_ADPCM_SBPRO_2;
3281
3656
} else if (!strcmp (layout, "sbpro3")) {
3282
id = CODEC_ID_ADPCM_SBPRO_3;
3657
id = AV_CODEC_ID_ADPCM_SBPRO_3;
3283
3658
} else if (!strcmp (layout, "sbpro4")) {
3284
id = CODEC_ID_ADPCM_SBPRO_4;
3659
id = AV_CODEC_ID_ADPCM_SBPRO_4;
3286
if (id != CODEC_ID_NONE)
3661
if (id != AV_CODEC_ID_NONE)
3288
3663
} else if (!strcmp (mimetype, "video/x-4xm")) {
3664
id = AV_CODEC_ID_4XM;
3291
3666
} else if (!strcmp (mimetype, "audio/x-dpcm")) {
3292
3667
const gchar *layout;