From patchwork Mon Nov 14 23:11:17 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: liangsi X-Patchwork-Id: 1425 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.90.1 with SMTP id o1csp1298401vsb; Mon, 14 Nov 2016 15:12:05 -0800 (PST) X-Received: by 10.28.226.139 with SMTP id z133mr732228wmg.139.1479165125762; Mon, 14 Nov 2016 15:12:05 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c1si25666195wjn.227.2016.11.14.15.12.04; Mon, 14 Nov 2016 15:12:05 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 860F1689E4C; Tue, 15 Nov 2016 01:12:02 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f49.google.com (mail-pg0-f49.google.com [74.125.83.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 699E5689D65 for ; Tue, 15 Nov 2016 01:11:55 +0200 (EET) Received: by mail-pg0-f49.google.com with SMTP id x23so56231135pgx.1 for ; Mon, 14 Nov 2016 15:11:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=haf+4iPYBZ7gb8pc2a8nvu/WVtA7ig9Rg08/SVhyZ9c=; b=ooSyqcD0rdgPzb99oVhP1i9zrpDDOq0rP/RxshRJSNwljB3FAeCp/XBqM2UmLKTrww rbzPwJdwp5wOA3JdJp5pN/DIBV4uMpEz4oV7ebb917Pa7q38ijJ/zCgbyUryOBlb49Fm +97OskEVEnqP05+HuGWf3Zr3Fz9IFeLKGgU+hLLlAxwRQPj13K/Iaun04BgvoPVI4hMj kvQ4wxv1zdoyVJ0qt2mE9q3OKCuUJi/xmsJZ45kzL5/QJVbNT50pnzkZfMOQSsiYONe3 DtEsC7twM/u7EDMFPbcnnKkowQCVtT62ExDJClgslqkwpAY+h5RBt4JgijtDTT2IJ9fn kh/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=haf+4iPYBZ7gb8pc2a8nvu/WVtA7ig9Rg08/SVhyZ9c=; b=GhAv331qvmJR1kkOFstipSlLc7XWRfiEXjlWCiLGqUdSll2Kw89syLa2Zlj2MHSFVd M8S/saTsCEzJ2h2qjWqYd2HGaLkhgVD6xpnMsKPrOHQl8zb+bqVp4O2MKM4OVGJJknZ5 xvmyNAZBXUwRq069ziuF2VgC7JERJQnXRv0K0yeetLcnJaStO+FrbXpLGExeTtRviiCY CDPIznsi53X1XAFC5k7dELbdWdPs6hgcG71hGdAH7lIIHMlxiAqQgBJR2Rw1EVWp+DcP 9tPX/TwtOv0fJZvEHoloCYeAfNfEm7vtbxrSy+f8Bo5ctP2+0idEr4AQHGocIjDE7CsQ cwsA== X-Gm-Message-State: ABUngvc1OL+DzlNPZNm9DVWnR+jtXZruzHXvhFE/jmAMKAc0dxdXz8b0O1jZYtibyLPt7qYO X-Received: by 10.98.155.9 with SMTP id r9mr40946781pfd.71.1479165113146; Mon, 14 Nov 2016 15:11:53 -0800 (PST) Received: from zhenni.mtv.corp.google.com ([100.98.2.49]) by smtp.gmail.com with ESMTPSA id l7sm37615381pfg.35.2016.11.14.15.11.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 14 Nov 2016 15:11:52 -0800 (PST) From: Zhenni Huang To: ffmpeg-devel@ffmpeg.org Date: Mon, 14 Nov 2016 15:11:17 -0800 Message-Id: <1479165077-55328-1-git-send-email-zhennihuang@google.com> X-Mailer: git-send-email 2.8.0.rc3.226.g39d4020 In-Reply-To: <1478198900-63335-1-git-send-email-zhennihuang@google.com> References: <1478198900-63335-1-git-send-email-zhennihuang@google.com> Subject: [FFmpeg-devel] [PATCH] mov: extract stsd vendor field in metadata. Also updates fate ref for rgb24-mkv and fate-mov-zombie as the output will contain the new metadata field. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Zhenni Huang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- libavformat/mov.c | 23 +++++++++++++++++++++-- tests/ref/fate/mov-zombie | 2 +- tests/ref/fate/rgb24-mkv | 4 ++-- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index 9ec7d03..6176415 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -1835,6 +1835,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() */ @@ -1842,7 +1844,15 @@ static void mov_parse_stsd_video(MOVContext *c, AVIOContext *pb, avio_rb16(pb); /* version */ avio_rb16(pb); /* revision level */ - avio_rb32(pb); /* vendor */ + + /* set video_vendor_id */ + video_vendor_id = avio_rl32(pb); /* vendor */ + if (video_vendor_id != 0) { + memset(video_vendor_id_buffer, 0, 5); + memcpy(video_vendor_id_buffer, (char*)&video_vendor_id, 4); + av_dict_set(&st->metadata, "vendor_id", video_vendor_id_buffer, 0); + } + avio_rb32(pb); /* temporal quality */ avio_rb32(pb); /* spatial quality */ @@ -1891,9 +1901,18 @@ 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 */ + + /* set audio_vendor_id */ + audio_vendor_id = avio_rl32(pb); /* vendor */ + if (audio_vendor_id != 0) { + memset(audio_vendor_id_buffer, 0, 5); + memcpy(audio_vendor_id_buffer, (char*)&audio_vendor_id, 4); + 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 */ diff --git a/tests/ref/fate/mov-zombie b/tests/ref/fate/mov-zombie index 42e3a6f..d032618 100644 --- a/tests/ref/fate/mov-zombie +++ b/tests/ref/fate/mov-zombie @@ -129,5 +129,5 @@ packet|codec_type=video|stream_index=0|pts=188623|pts_time=2.095811|dts=188622|d frame|media_type=video|stream_index=0|key_frame=0|pkt_pts=188623|pkt_pts_time=2.095811|pkt_dts=188622|pkt_dts_time=2.095800|best_effort_timestamp=188623|best_effort_timestamp_time=2.095811|pkt_duration=3003|pkt_duration_time=0.033367|pkt_pos=100846|pkt_size=974|width=160|height=240|pix_fmt=yuv420p|sample_aspect_ratio=2:1|pict_type=B|coded_picture_number=64|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0 packet|codec_type=video|stream_index=0|pts=197632|pts_time=2.195911|dts=191625|dts_time=2.129167|duration=3003|duration_time=0.033367|convergence_duration=N/A|convergence_duration_time=N/A|size=580|pos=101820|flags=__ frame|media_type=video|stream_index=0|key_frame=0|pkt_pts=191626|pkt_pts_time=2.129178|pkt_dts=N/A|pkt_dts_time=N/A|best_effort_timestamp=191626|best_effort_timestamp_time=2.129178|pkt_duration=3003|pkt_duration_time=0.033367|pkt_pos=99180|pkt_size=1666|width=160|height=240|pix_fmt=yuv420p|sample_aspect_ratio=2:1|pict_type=P|coded_picture_number=63|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0 -stream|index=0|codec_name=h264|profile=77|codec_type=video|codec_time_base=212521/12744000|codec_tag_string=avc1|codec_tag=0x31637661|width=160|height=240|coded_width=160|coded_height=240|has_b_frames=0|sample_aspect_ratio=2:1|display_aspect_ratio=4:3|pix_fmt=yuv420p|level=12|color_range=tv|color_space=smpte170m|color_transfer=bt709|color_primaries=smpte170m|chroma_location=topleft|field_order=unknown|timecode=N/A|refs=2|is_avc=true|nal_length_size=4|id=N/A|r_frame_rate=30000/1001|avg_frame_rate=6372000/212521|time_base=1/90000|start_pts=0|start_time=0.000000|duration_ts=2125200|duration=23.613333|bit_rate=333874|max_bit_rate=N/A|bits_per_raw_sample=8|nb_frames=708|nb_read_frames=65|nb_read_packets=66|disposition:default=1|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0|disposition:timed_thumbnails=0|tag:rotate=0|tag:creation_time=2008-05-12T20:59:27.000000Z|tag:language=eng|tag:handler_name=Apple Alias Data Handler|tag:encoder=H.264 +stream|index=0|codec_name=h264|profile=77|codec_type=video|codec_time_base=212521/12744000|codec_tag_string=avc1|codec_tag=0x31637661|width=160|height=240|coded_width=160|coded_height=240|has_b_frames=0|sample_aspect_ratio=2:1|display_aspect_ratio=4:3|pix_fmt=yuv420p|level=12|color_range=tv|color_space=smpte170m|color_transfer=bt709|color_primaries=smpte170m|chroma_location=topleft|field_order=unknown|timecode=N/A|refs=2|is_avc=true|nal_length_size=4|id=N/A|r_frame_rate=30000/1001|avg_frame_rate=6372000/212521|time_base=1/90000|start_pts=0|start_time=0.000000|duration_ts=2125200|duration=23.613333|bit_rate=333874|max_bit_rate=N/A|bits_per_raw_sample=8|nb_frames=708|nb_read_frames=65|nb_read_packets=66|disposition:default=1|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0|disposition:timed_thumbnails=0|tag:rotate=0|tag:creation_time=2008-05-12T20:59:27.000000Z|tag:language=eng|tag:handler_name=Apple Alias Data Handler|tag:vendor_id=appl|tag:encoder=H.264 side_data|side_data_type=Display Matrix|side_data_size=36|displaymatrix=\n00000000: 131072 0 0\n00000001: 0 65536 0\n00000002: 0 0 1073741824\n|rotation=0 diff --git a/tests/ref/fate/rgb24-mkv b/tests/ref/fate/rgb24-mkv index 88d22c1..ba6311d 100644 --- a/tests/ref/fate/rgb24-mkv +++ b/tests/ref/fate/rgb24-mkv @@ -1,5 +1,5 @@ -94cce0d7d5b14b4c86e74a1ca454c5aa *tests/data/fate/rgb24-mkv.matroska -58361 tests/data/fate/rgb24-mkv.matroska +29e4fffecb2002912fc05ed910679ce3 *tests/data/fate/rgb24-mkv.matroska +58390 tests/data/fate/rgb24-mkv.matroska #tb 0: 1/10 #media_type 0: video #codec_id 0: rawvideo