avcodecmap: Add support for SpeedHQ video codec

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/79>
This commit is contained in:
Sebastian Dröge 2020-06-26 13:11:56 +03:00
parent e1928898c8
commit f7371f8691
2 changed files with 31 additions and 1 deletions

View file

@ -19166,7 +19166,7 @@
"long-name": "libav NewTek SpeedHQ decoder", "long-name": "libav NewTek SpeedHQ decoder",
"pad-templates": { "pad-templates": {
"sink": { "sink": {
"caps": "unknown/unknown:\n", "caps": "video/x-speedhq:\n",
"direction": "sink", "direction": "sink",
"presence": "always" "presence": "always"
}, },

View file

@ -1413,6 +1413,21 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id,
"video/x-cineform", NULL); "video/x-cineform", NULL);
break; break;
case AV_CODEC_ID_SPEEDHQ:
if (context && context->codec_tag) {
gchar *variant = g_strdup_printf ("%" GST_FOURCC_FORMAT,
GST_FOURCC_ARGS (context->codec_tag));
caps =
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
"video/x-speedhq", "variant", G_TYPE_STRING, variant, NULL);
g_free (variant);
} else {
caps =
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
"video/x-speedhq", NULL);
}
break;
case AV_CODEC_ID_AAC: case AV_CODEC_ID_AAC:
{ {
caps = caps =
@ -3415,6 +3430,18 @@ gst_ffmpeg_caps_with_codecid (enum AVCodecID codec_id,
} }
break; break;
} }
case AV_CODEC_ID_SPEEDHQ:
{
const gchar *variant;
if (context && (variant = gst_structure_get_string (str, "variant"))
&& strlen (variant) == 4) {
context->codec_tag =
GST_MAKE_FOURCC (variant[0], variant[1], variant[2], variant[3]);
}
break;
}
default: default:
break; break;
} }
@ -4070,6 +4097,9 @@ gst_ffmpeg_caps_to_codecid (const GstCaps * caps, AVCodecContext * context)
} else if (!strcmp (mimetype, "video/x-cineform")) { } else if (!strcmp (mimetype, "video/x-cineform")) {
id = AV_CODEC_ID_CFHD; id = AV_CODEC_ID_CFHD;
video = TRUE; video = TRUE;
} else if (!strcmp (mimetype, "video/x-speedhq")) {
id = AV_CODEC_ID_SPEEDHQ;
video = TRUE;
} else if (!strcmp (mimetype, "video/x-indeo")) { } else if (!strcmp (mimetype, "video/x-indeo")) {
gint indeoversion = 0; gint indeoversion = 0;