summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2020-01-23 10:03:40 +0200
committerSebastian Dröge <slomo@coaxion.net>2020-01-24 08:50:53 +0000
commitc057fef347e1a559c19f484a8337048d503c971e (patch)
treec6f521a9fadba3305d1aede39098abb45dd35402 /ext
parent6c3fc7a16d7c2f1df0563748d400e3b66e0557af (diff)
downloadgst-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.c27
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;