diff --git a/subprojects/gst-plugins-good/gst/isomp4/fourcc.h b/subprojects/gst-plugins-good/gst/isomp4/fourcc.h index 6254c3d472..1243381b12 100644 --- a/subprojects/gst-plugins-good/gst/isomp4/fourcc.h +++ b/subprojects/gst-plugins-good/gst/isomp4/fourcc.h @@ -460,6 +460,15 @@ G_BEGIN_DECLS /* ONVIF Export File Format */ #define FOURCC_cstb GST_MAKE_FOURCC('c','s','t','b') +/* Hap video codec */ +#define FOURCC_Hap1 GST_MAKE_FOURCC('H','a','p','1') +#define FOURCC_Hap5 GST_MAKE_FOURCC('H','a','p','5') +#define FOURCC_HapY GST_MAKE_FOURCC('H','a','p','Y') +#define FOURCC_HapM GST_MAKE_FOURCC('H','a','p','M') +#define FOURCC_HapA GST_MAKE_FOURCC('H','a','p','A') +#define FOURCC_Hap7 GST_MAKE_FOURCC('H','a','p','7') +#define FOURCC_HapH GST_MAKE_FOURCC('H','a','p','H') + G_END_DECLS #endif /* __FOURCC_H__ */ diff --git a/subprojects/gst-plugins-good/gst/isomp4/qtdemux.c b/subprojects/gst-plugins-good/gst/isomp4/qtdemux.c index 88014ad148..d5074036b1 100644 --- a/subprojects/gst-plugins-good/gst/isomp4/qtdemux.c +++ b/subprojects/gst-plugins-good/gst/isomp4/qtdemux.c @@ -17153,6 +17153,46 @@ qtdemux_video_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, _codec ("Lagarith lossless video codec"); caps = gst_caps_new_empty_simple ("video/x-lagarith"); break; + case FOURCC_Hap1: + case FOURCC_Hap5: + case FOURCC_HapY: + case FOURCC_HapM: + case FOURCC_HapA: + case FOURCC_Hap7: + case FOURCC_HapH:{ + gchar *variant = + g_strdup_printf ("%" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (fourcc)); + caps = gst_caps_new_simple ("video/x-hap", + "variant", G_TYPE_STRING, variant, NULL); + g_free (variant); + + // https://github.com/Vidvox/hap/blob/master/documentation/HapVideoDRAFT.md + switch (fourcc) { + case FOURCC_Hap5: + _codec ("Hap Alpha"); + break; + case FOURCC_HapY: + _codec ("Hap Q"); + break; + case FOURCC_HapM: + _codec ("Hap Q Alpha"); + break; + case FOURCC_HapA: + _codec ("Hap Alpha-Only"); + break; + case FOURCC_Hap7: + _codec ("Hap R"); + break; + case FOURCC_HapH: + _codec ("Hap HDR"); + break; + case FOURCC_Hap1: + default: + _codec ("Hap"); + break; + } + break; + } case FOURCC_uncv: { const guint8 ENTRY_MINIMUM_SIZE = 86; // video sample description minimum size in bytes