qtdemux: Add basic support for AVC-Intra video

AVC-Intra is a range of H.264-compliant intra-only codecs from
Panasonic. The codes and descriptions have been taken from VLC.

The (encumbered) sample I have here produces byte-stream H.264,
including SPS and PPS and no `avcC` box.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3739>
This commit is contained in:
Jan Alexander Steffens (heftig) 2023-01-17 15:04:10 +01:00 committed by GStreamer Marge Bot
parent ed1bdf9b1a
commit 211191564e
3 changed files with 41 additions and 0 deletions

View file

@ -86,6 +86,18 @@ G_BEGIN_DECLS
#define FOURCC_aART GST_MAKE_FOURCC('a','A','R','T')
#define FOURCC_ac_3 GST_MAKE_FOURCC('a','c','-','3')
#define FOURCC_agsm GST_MAKE_FOURCC('a','g','s','m')
#define FOURCC_ai12 GST_MAKE_FOURCC('a','i','1','2')
#define FOURCC_ai13 GST_MAKE_FOURCC('a','i','1','3')
#define FOURCC_ai15 GST_MAKE_FOURCC('a','i','1','5')
#define FOURCC_ai16 GST_MAKE_FOURCC('a','i','1','6')
#define FOURCC_ai1p GST_MAKE_FOURCC('a','i','1','p')
#define FOURCC_ai1q GST_MAKE_FOURCC('a','i','1','q')
#define FOURCC_ai52 GST_MAKE_FOURCC('a','i','5','2')
#define FOURCC_ai53 GST_MAKE_FOURCC('a','i','5','3')
#define FOURCC_ai55 GST_MAKE_FOURCC('a','i','5','5')
#define FOURCC_ai56 GST_MAKE_FOURCC('a','i','5','6')
#define FOURCC_ai5p GST_MAKE_FOURCC('a','i','5','p')
#define FOURCC_ai5q GST_MAKE_FOURCC('a','i','5','q')
#define FOURCC_alac GST_MAKE_FOURCC('a','l','a','c')
#define FOURCC_fLaC GST_MAKE_FOURCC('f','L','a','C')
#define FOURCC_dfLa GST_MAKE_FOURCC('d','f','L','a')

View file

@ -14835,6 +14835,23 @@ qtdemux_video_caps (GstQTDemux * qtdemux, QtDemuxStream * stream,
"stream-format", G_TYPE_STRING, "avc3",
"alignment", G_TYPE_STRING, "au", NULL);
break;
case FOURCC_ai12:
case FOURCC_ai13:
case FOURCC_ai15:
case FOURCC_ai16:
case FOURCC_ai1p:
case FOURCC_ai1q:
case FOURCC_ai52:
case FOURCC_ai53:
case FOURCC_ai55:
case FOURCC_ai56:
case FOURCC_ai5p:
case FOURCC_ai5q:
_codec ("H.264 / AVC");
caps = gst_caps_new_simple ("video/x-h264",
"stream-format", G_TYPE_STRING, "byte-stream",
"alignment", G_TYPE_STRING, "au", NULL);
break;
case FOURCC_H265:
case FOURCC_hvc1:
case FOURCC_dvh1:

View file

@ -190,6 +190,18 @@ static const QtNodeType qt_node_types[] = {
{FOURCC_avc3, "AV codec configuration v3", 0},
{FOURCC_dva1, "AVC-based Dolby Vision derived from avc1", 0},
{FOURCC_dvav, "AVC-based Dolby Vision derived from avc3", 0},
{FOURCC_ai12, "AVC-Intra 100M 1080p25/50", 0},
{FOURCC_ai13, "AVC-Intra 100M 1080p24/30/60", 0},
{FOURCC_ai15, "AVC-Intra 100M 1080i50", 0},
{FOURCC_ai16, "AVC-Intra 100M 1080i60", 0},
{FOURCC_ai1p, "AVC-Intra 100M 720p24/30/60", 0},
{FOURCC_ai1q, "AVC-Intra 100M 720p25/50", 0},
{FOURCC_ai52, "AVC-Intra 50M 1080p25/50", 0},
{FOURCC_ai53, "AVC-Intra 50M 1080p24/30/60", 0},
{FOURCC_ai55, "AVC-Intra 50M 1080i50", 0},
{FOURCC_ai56, "AVC-Intra 50M 1080i60", 0},
{FOURCC_ai5p, "AVC-Intra 50M 720p24/30/60", 0},
{FOURCC_ai5q, "AVC-Intra 50M 720p25/50", 0},
{FOURCC_mp4s, "VOBSUB codec configuration", 0},
{FOURCC_hvc1, "HEVC codec configuration", 0},
{FOURCC_hev1, "HEVC codec configuration", 0},