diff --git a/subprojects/gst-libav/docs/gst_plugins_cache.json b/subprojects/gst-libav/docs/gst_plugins_cache.json index bb075d1a04..61356ffd40 100644 --- a/subprojects/gst-libav/docs/gst_plugins_cache.json +++ b/subprojects/gst-libav/docs/gst_plugins_cache.json @@ -137857,7 +137857,7 @@ "presence": "always" }, "video_%%u": { - "caps": "video/x-vp8:\nvideo/x-vp9:\nvideo/x-av1:\n", + "caps": "video/x-vp8:\nvideo/x-vp9:\nvideo/x-av1:\n stream-format: obu-stream\n alignment: { (string)tu, (string)frame }\n", "direction": "sink", "presence": "request" } diff --git a/subprojects/gst-libav/ext/libav/gstavcodecmap.c b/subprojects/gst-libav/ext/libav/gstavcodecmap.c index a27bea1375..716df19f26 100644 --- a/subprojects/gst-libav/ext/libav/gstavcodecmap.c +++ b/subprojects/gst-libav/ext/libav/gstavcodecmap.c @@ -2358,7 +2358,21 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id, case AV_CODEC_ID_AV1: caps = gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-av1", - NULL); + "stream-format", G_TYPE_STRING, "obu-stream", NULL); + if (encode) { + GValue arr = { 0, }; + GValue item = { 0, }; + g_value_init (&arr, GST_TYPE_LIST); + g_value_init (&item, G_TYPE_STRING); + g_value_set_string (&item, "tu"); + gst_value_list_append_value (&arr, &item); + g_value_set_string (&item, "frame"); + gst_value_list_append_value (&arr, &item); + g_value_unset (&item); + + gst_caps_set_value (caps, "alignment", &arr); + g_value_unset (&arr); + } break; default: GST_DEBUG ("Unknown codec ID %d, please add mapping here", codec_id); @@ -4153,6 +4167,9 @@ gst_ffmpeg_caps_to_codecid (const GstCaps * caps, AVCodecContext * context) } else if (!strcmp (mimetype, "video/x-vp9")) { id = AV_CODEC_ID_VP9; video = TRUE; + } else if (!strcmp (mimetype, "video/x-av1")) { + id = AV_CODEC_ID_AV1; + video = TRUE; } else if (!strcmp (mimetype, "video/x-flash-screen")) { id = AV_CODEC_ID_FLASHSV; video = TRUE;