Report AV1 codec id through nestegg. draft
authorRalph Giles <giles@mozilla.com>
Wed, 19 Apr 2017 14:27:46 -0700
changeset 566129 a76b1bd48c799ee701fb75400df69be40939cd2b
parent 566128 77541f3f0a3be4b24b74e38a678e2017366620ca
child 566130 de2625e9c2dddb8dd642f2999e94d42b9bd4403e
push id55094
push userbmo:giles@thaumas.net
push dateThu, 20 Apr 2017 22:03:17 +0000
milestone55.0a1
Report AV1 codec id through nestegg. Add AV1 support to the nestegg webm parser library. The reference implementation, forked from libvpx, uses the WebM container by default, so that's the easiest to test with at this point. Patch is being prepared for upstream in https://github.com/rillian/nestegg/tree/av1 MozReview-Commit-ID: 6IYk7Yzzb91
media/libnestegg/include/nestegg.h
media/libnestegg/src/nestegg.c
--- a/media/libnestegg/include/nestegg.h
+++ b/media/libnestegg/include/nestegg.h
@@ -66,16 +66,17 @@ extern "C" {
 #define NESTEGG_TRACK_VIDEO   0       /**< Track is of type video. */
 #define NESTEGG_TRACK_AUDIO   1       /**< Track is of type audio. */
 #define NESTEGG_TRACK_UNKNOWN INT_MAX /**< Track is of type unknown. */
 
 #define NESTEGG_CODEC_VP8     0       /**< Track uses Google On2 VP8 codec. */
 #define NESTEGG_CODEC_VORBIS  1       /**< Track uses Xiph Vorbis codec. */
 #define NESTEGG_CODEC_VP9     2       /**< Track uses Google On2 VP9 codec. */
 #define NESTEGG_CODEC_OPUS    3       /**< Track uses Xiph Opus codec. */
+#define NESTEGG_CODEC_AV1     4       /**< Track use AOMedia AV1 codec. */
 #define NESTEGG_CODEC_UNKNOWN INT_MAX /**< Track uses unknown codec. */
 
 #define NESTEGG_VIDEO_MONO              0 /**< Track is mono video. */
 #define NESTEGG_VIDEO_STEREO_LEFT_RIGHT 1 /**< Track is side-by-side stereo video.  Left first. */
 #define NESTEGG_VIDEO_STEREO_BOTTOM_TOP 2 /**< Track is top-bottom stereo video.  Right first. */
 #define NESTEGG_VIDEO_STEREO_TOP_BOTTOM 3 /**< Track is top-bottom stereo video.  Left first. */
 #define NESTEGG_VIDEO_STEREO_RIGHT_LEFT 11 /**< Track is side-by-side stereo video.  Right first. */
 
--- a/media/libnestegg/src/nestegg.c
+++ b/media/libnestegg/src/nestegg.c
@@ -149,16 +149,17 @@ enum ebml_type_enum {
 
 /* Track Types */
 #define TRACK_TYPE_VIDEO            1
 #define TRACK_TYPE_AUDIO            2
 
 /* Track IDs */
 #define TRACK_ID_VP8                "V_VP8"
 #define TRACK_ID_VP9                "V_VP9"
+#define TRACK_ID_AV1                "V_AV1"
 #define TRACK_ID_VORBIS             "A_VORBIS"
 #define TRACK_ID_OPUS               "A_OPUS"
 
 /* Track Encryption */
 #define CONTENT_ENC_ALGO_AES        5
 #define AES_SETTINGS_CIPHER_CTR     1
 
 /* Packet Encryption */
@@ -2365,16 +2366,19 @@ nestegg_track_codec_id(nestegg * ctx, un
     return -1;
 
   if (strcmp(codec_id, TRACK_ID_VP8) == 0)
     return NESTEGG_CODEC_VP8;
 
   if (strcmp(codec_id, TRACK_ID_VP9) == 0)
     return NESTEGG_CODEC_VP9;
 
+  if (strcmp(codec_id, TRACK_ID_AV1) == 0)
+    return NESTEGG_CODEC_AV1;
+
   if (strcmp(codec_id, TRACK_ID_VORBIS) == 0)
     return NESTEGG_CODEC_VORBIS;
 
   if (strcmp(codec_id, TRACK_ID_OPUS) == 0)
     return NESTEGG_CODEC_OPUS;
 
   return NESTEGG_CODEC_UNKNOWN;
 }