From 211191564e39319d677d5755e30054966a11cfd5 Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" Date: Tue, 17 Jan 2023 15:04:10 +0100 Subject: [PATCH] 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: --- subprojects/gst-plugins-good/gst/isomp4/fourcc.h | 12 ++++++++++++ subprojects/gst-plugins-good/gst/isomp4/qtdemux.c | 17 +++++++++++++++++ subprojects/gst-plugins-good/gst/isomp4/qtdemux_types.c | 12 ++++++++++++ 3 files changed, 41 insertions(+) diff --git a/subprojects/gst-plugins-good/gst/isomp4/fourcc.h b/subprojects/gst-plugins-good/gst/isomp4/fourcc.h index 8e15bf7..0831b4c 100644 --- a/subprojects/gst-plugins-good/gst/isomp4/fourcc.h +++ b/subprojects/gst-plugins-good/gst/isomp4/fourcc.h @@ -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') diff --git a/subprojects/gst-plugins-good/gst/isomp4/qtdemux.c b/subprojects/gst-plugins-good/gst/isomp4/qtdemux.c index 7b1209b..2eb94a5 100644 --- a/subprojects/gst-plugins-good/gst/isomp4/qtdemux.c +++ b/subprojects/gst-plugins-good/gst/isomp4/qtdemux.c @@ -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: diff --git a/subprojects/gst-plugins-good/gst/isomp4/qtdemux_types.c b/subprojects/gst-plugins-good/gst/isomp4/qtdemux_types.c index f9bb7c3..5e6d735 100644 --- a/subprojects/gst-plugins-good/gst/isomp4/qtdemux_types.c +++ b/subprojects/gst-plugins-good/gst/isomp4/qtdemux_types.c @@ -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}, -- 2.7.4