[FFmpeg-devel] [PATCH] mov: extract stsd vendor field in metadata.
Zhenni Huang
zhennihuang at google.com
Thu Nov 3 20:48:20 EET 2016
---
libavformat/mov.c | 25 +++++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 4222088..2cb041f 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1824,6 +1824,8 @@ static void mov_parse_stsd_video(MOVContext *c, AVIOContext *pb,
uint8_t codec_name[32];
int64_t stsd_start;
unsigned int len;
+ int video_vendor_id = 0;
+ char video_vendor_id_buffer[5];
/* The first 16 bytes of the video sample description are already
* read in ff_mov_read_stsd_entries() */
@@ -1831,10 +1833,18 @@ static void mov_parse_stsd_video(MOVContext *c, AVIOContext *pb,
avio_rb16(pb); /* version */
avio_rb16(pb); /* revision level */
- avio_rb32(pb); /* vendor */
+ video_vendor_id = avio_rb32(pb); /* vendor */
avio_rb32(pb); /* temporal quality */
avio_rb32(pb); /* spatial quality */
+ /* set video_vendor_id */
+ video_vendor_id_buffer[0] = (video_vendor_id >> 24) & 0xff;
+ video_vendor_id_buffer[1] = (video_vendor_id >> 16) & 0xff;
+ video_vendor_id_buffer[2] = (video_vendor_id >> 8) & 0xff;
+ video_vendor_id_buffer[3] = (video_vendor_id >> 0) & 0xff;
+ video_vendor_id_buffer[4] = 0;
+ av_dict_set(&st->metadata, "vendor_id", video_vendor_id_buffer, 0);
+
st->codecpar->width = avio_rb16(pb); /* width */
st->codecpar->height = avio_rb16(pb); /* height */
@@ -1880,9 +1890,20 @@ static void mov_parse_stsd_audio(MOVContext *c, AVIOContext *pb,
int bits_per_sample, flags;
uint16_t version = avio_rb16(pb);
AVDictionaryEntry *compatible_brands = av_dict_get(c->fc->metadata, "compatible_brands", NULL, AV_DICT_MATCH_CASE);
+ int audio_vendor_id = 0;
+ char audio_vendor_id_buffer[5];
avio_rb16(pb); /* revision level */
- avio_rb32(pb); /* vendor */
+ audio_vendor_id = avio_rb32(pb); /* vendor */
+
+ /* set audio_vendor_id */
+ audio_vendor_id_buffer[0] = (audio_vendor_id >> 24) & 0xff;
+ audio_vendor_id_buffer[1] = (audio_vendor_id >> 16) & 0xff;
+ audio_vendor_id_buffer[2] = (audio_vendor_id >> 8) & 0xff;
+ audio_vendor_id_buffer[3] = (audio_vendor_id >> 0) & 0xff;
+ audio_vendor_id_buffer[4] = 0;
+
+ av_dict_set(&st->metadata, "vendor_id", audio_vendor_id_buffer, 0);
st->codecpar->channels = avio_rb16(pb); /* channel count */
st->codecpar->bits_per_coded_sample = avio_rb16(pb); /* sample size */
--
2.8.0.rc3.226.g39d4020
More information about the ffmpeg-devel
mailing list