diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2020-01-23 10:03:40 +0200 |
---|---|---|
committer | Sebastian Dröge <slomo@coaxion.net> | 2020-01-24 08:50:53 +0000 |
commit | c057fef347e1a559c19f484a8337048d503c971e (patch) | |
tree | c6f521a9fadba3305d1aede39098abb45dd35402 /ext | |
parent | 6c3fc7a16d7c2f1df0563748d400e3b66e0557af (diff) | |
download | gst-libav-c057fef347e1a559c19f484a8337048d503c971e.tar.gz |
avcodecmap: Set AAC/H264/H265 stream-format for demuxer/encoder situations if no codec_data is provided
This fixes output of the above formats from demuxers.
Diffstat (limited to 'ext')
-rw-r--r-- | ext/libav/gstavcodecmap.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/ext/libav/gstavcodecmap.c b/ext/libav/gstavcodecmap.c index 2e270d9..f64f52e 100644 --- a/ext/libav/gstavcodecmap.c +++ b/ext/libav/gstavcodecmap.c @@ -1299,6 +1299,14 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id, g_value_unset (&item); gst_caps_set_value (caps, "stream-format", &arr); g_value_unset (&arr); + } else { + if (context && context->extradata_size > 0) { + gst_caps_set_simple (caps, "stream-format", G_TYPE_STRING, "avc", + NULL); + } else { + gst_caps_set_simple (caps, "stream-format", G_TYPE_STRING, + "byte-stream", NULL); + } } break; @@ -1320,6 +1328,15 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id, g_value_unset (&item); gst_caps_set_value (caps, "stream-format", &arr); g_value_unset (&arr); + } else { + if (context && context->extradata_size > 0) { + /* FIXME: Assume hvc1 */ + gst_caps_set_simple (caps, "stream-format", G_TYPE_STRING, "hvc1", + NULL); + } else { + gst_caps_set_simple (caps, "stream-format", G_TYPE_STRING, + "byte-stream", NULL); + } } break; @@ -1448,12 +1465,18 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id, g_value_unset (&arr); } else { gst_caps_set_simple (caps, "mpegversion", G_TYPE_INT, 4, - "stream-format", G_TYPE_STRING, "raw", "base-profile", G_TYPE_STRING, "lc", NULL); - if (context && context->extradata_size > 0) + if (context && context->extradata_size > 0) { + gst_caps_set_simple (caps, "stream-format", G_TYPE_STRING, "raw", + NULL); gst_codec_utils_aac_caps_set_level_and_profile (caps, context->extradata, context->extradata_size); + } else { + /* FIXME: Assume adts */ + gst_caps_set_simple (caps, "stream-format", G_TYPE_STRING, "adts", + NULL); + } } break; |