677 Commits

Author SHA1 Message Date
Tom Finegan
d518128266 webm_parser: Enable usage of werror.
Mass warning clean up. Mainly:
- Explicit casts of numeric literals to avoid signed/unsigned compare
  warnings.
- Commenting out of unused function arg names.

Change-Id: I0e70393a5743ae984035d43712c724d4ccd12f9d
2016-08-10 08:56:57 -07:00
Tom Finegan
e1fe7627c8 webm2pes: Add test for mux/demux of large input.
Change-Id: I253aa49aa3757682dbba83bd9ba6dd1e93d7ccce
2016-08-08 11:15:29 -07:00
Tom Finegan
1b24a792e3 vpxpes_parser: Read and store PTS when present.
Change-Id: I11acb45b26eeea6f5945c04bb447937ba2ffca9f
2016-08-08 11:15:23 -07:00
Tom Finegan
6cf0a0f400 vpxpes_parser: Store frame payloads.
libwebm_util:
- Add 90khz -> nanosecond conversion.

vpxpes_parser:
- Get rid of VpxPesParser::VpxFrame and use VideoFrame.
- Store/Accumulate (when neccessary) PES payloads in
  VideoFrames.
- Change type of size constants from int to size_t.
- Return offset accounting for origin from FindStartCode().
- Check all PTS marker bits (instead of checking the second
  marker twice).

video_frame:
- Add nanosecond_pts mutator.

webm2pes:
- Write DTS/PTS presence flag correctly when PTS is not
  present.

Change-Id: I10f16cd03bb3a51205a25331527ddceb3769ba03
2016-08-08 11:14:03 -07:00
Tom Finegan
25d26028c1 webm_parser: Convert style to match the rest of libwebm
Remove webm_parser/clang-format-style.
Run clang-format -style=file -i for each source file.

Change-Id: Ieaf44bd323375cbcfec67014e94b7742d6bda14a
2016-07-27 14:31:28 -07:00
Tom Finegan
24be76dcb2 webm2pes: Replace VpxFrame with VideoFrame.
VideoFrame was created in order to get rid of the two
slightly different VpxFrame implementations. This patch
gets rid of Webm2Pes's version.

Change-Id: I5af29d5ca717121ee7ab30f28e42d2a43ea5abb0
2016-07-22 15:07:42 -07:00
Tom Finegan
b451c3ba96 Add a basic video frame storage class.
Includes simple tests.

Change-Id: I52276686d6c2bc7b62d260af37affe78aa4dcf50
2016-07-22 15:07:33 -07:00
Tom Finegan
05c90ebccc libwebm_util: Clarify error text in superframe parser.
Change-Id: Icb478d58306bc5e501df9585ece35c9747dd640d
2016-07-22 11:34:18 -07:00
Tom Finegan
e6415af941 webm2pes: Make WritePesPacket() a public method.
WritePesPacket() now takes a VpxFrame as input and a
PacketDataBuffer* as an output  parameter, and avoids
using members entirely. This facilitates deeper testing
of Webm2Pes without requiring friendship with test
classes and methods.

Change-Id: I076db8900cc1a5c864b54f5fe3403fb05b4bd835
2016-07-20 17:36:46 -07:00
Tom Finegan
8f840ddaa3 webm2pes: Move frame read out of PES packet write method.
Makes writing tests easier by allowing caller to pass data
for packetizing directly into the method.

Change-Id: I553fa8c1636041c4a5ff043862918a5cdc9163ba
2016-07-20 14:00:36 -07:00
Tom Finegan
448af971d2 webm2pes: Restore frame fragmentation support.
Cap packet payload at 32 kB. Update test to expect non-zero
packet length.

Change-Id: Ibb68a4ef8d32c049c492ae546c631ef6376e3ffd
2016-07-18 14:32:02 -07:00
Tom Finegan
f8bb7149f5 cmake: Integrate new parsing API and tests.
Change-Id: I11e32bfffda12fa910c06bf7b8e3a0efbccf6054
2016-07-14 11:11:59 -07:00
Michael Bradshaw
cb8ce0b4b5 Add a new incremental parsing API
Change-Id: I6b921766836d58df0281fb23b2add3f62a478e14
2016-06-15 12:39:58 -07:00
Tom Finegan
900d322cc8 vpxpes_parser/webm2pes: BCMV and PTS fixes.
- Write BCMV length value big endian and include BCMV header
  size.
- Write PTS bits big endian.

Change-Id: I8cd72c233c21f5909438f5a3bb817e9477bdfcfb
2016-06-02 17:05:09 -07:00
Tom Finegan
4b735452bb webm2pes: Add start code emulation prevention.
- Make start codes reliable for VPx in PES.
- Stop setting the PES size field and stop splitting packets when
  larger than UINT16_MAX (always set 0; rely on start codes to find
  packet boundaries).

Change-Id: I402e91c26562e930f61543ca59223b83cc92be29
2016-06-02 17:05:07 -07:00
Frank Galligan
82903f36fa Add column tiles and frame parallel to webm_info
BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1227

Change-Id: I23b1611a91074bfa0cff3b788baeff71bc68d034
2016-05-17 09:00:41 -07:00
Vignesh Venkatasubramanian
5d91edf9f1 style_clean_up: Remove unnecessary parentheses
Change-Id: Ie3645319fa4d5a1fd254b4511a60ef6f6036afe5
2016-05-13 10:41:16 -07:00
hui su
a95aa4b294 vp9_level_stats: correct total_uncompressed_bits_ calculation
Only consider display frames.

Change-Id: I9061ad90775f0467a661b0ac5d11dc22e477a7c3
2016-05-06 15:37:09 -07:00
Tom Finegan
f46566f19a mkvreader: Fix shorten-64-to-32 warning in 32 bit builds.
BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1207

Change-Id: Ie1c97a314fefdf14dce455da16f5a29218ba4cf8
2016-05-06 11:40:48 -07:00
Tom Finegan
76630ca4a3 mkvwriter: Fix shorten-64-to-32 warning in 32 bit builds.
BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1207

Change-Id: I2dc1ce59ebf8051c9661b919813d5ab7cb115da0
2016-05-06 11:40:44 -07:00
Tom Finegan
a8ffbd4ed2 webm2pes: Fix format specifier warnings.
BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1207

Change-Id: If60866f8e60969bc6cbaef8eee72a805270bf65d
2016-05-06 11:40:38 -07:00
Frank Galligan
21015480f6 Merge "Add MaxLumaSampleRate grace percent to stats." 2016-05-02 22:00:22 +00:00
Frank Galligan
faf89d4ed1 Add MaxLumaSampleRate grace percent to stats.
BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1206

Change-Id: I29a956871bd5aa0c7b493601ed23b44a08414d32
2016-04-30 16:59:42 -07:00
Frank Galligan
d31e6c970d Fix profile 2 in vp9_header_parser.
BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1208

Change-Id: Ie31adef15eac965e3fb587825f63ff320c1d59fe
2016-04-29 17:11:29 -07:00
Frank Galligan
4fc66dab83 Merge "Add flag to estimate last frame's duration to stats." 2016-04-29 22:30:12 +00:00
Frank Galligan
bd3ab3abe6 Add flag to estimate last frame's duration to stats.
BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1204

Change-Id: Ie73e2981951f9eb6140bdfb0a6839320e009b7fe
2016-04-29 14:19:58 -07:00
Vignesh Venkatasubramanian
c89b968ce5 Merge "Fix lint issue in hdr_util.h" 2016-04-29 19:31:52 +00:00
Vignesh Venkatasubramanian
db5693d96b Merge "Add test for Cluster memory leak" 2016-04-29 19:31:40 +00:00
Vignesh Venkatasubramanian
c182ed97d1 Fix lint issue in hdr_util.h
Change-Id: Iba19ad153f9187c3942d406e41da04703f7dd5c7
2016-04-29 11:47:04 -07:00
Vignesh Venkatasubramanian
cc62ecd23f Add test for Cluster memory leak
Tests the scenario described in this CL:
https://chromium-review.googlesource.com/#/c/341251/

Change-Id: I4d732eebc11140691ed516321cf490905991720b
2016-04-29 11:42:36 -07:00
Frank Galligan
196708a95f Change MaxLumaSampleRate to be based on frame resolution.
MaxLumaSampleRate generation code now takes into account the frame
resolution of every frame.

BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1203

Change-Id: I666fa2f21971ff4fb80219ef29dee3254cbb370c
2016-04-29 08:15:37 -07:00
Vignesh Venkatasubramanian
26d673e737 Merge "mkvmuxer: Fix leak when a Cluster isn't finalized" 2016-04-29 02:17:33 +00:00
Frank Galligan
eacb314525 Merge "Add parsing support for new features in CodecPrivate." 2016-04-29 00:17:28 +00:00
Vignesh Venkatasubramanian
cbd676bb66 mkvmuxer: Fix leak when a Cluster isn't finalized
There's a leak in the following scenario:
  * AccurateClusterDuration is set to true.
  * Add a few frames.
  * An error is encountered while adding a frame and the
    application bails without calling Cluster::Finalize
  * All the frames we queues in QueueOrWriteFrames now leak.

This patch fixes this scenario by delete'ing any left over frames
in the Cluster's destructor.

Change-Id: I104f6814db18a86fae9877decfe6cc75b8937fcb
2016-04-28 12:30:29 -07:00
Tom Finegan
9a235e0bc9 mkvmuxer: Set doctype to matroska when muxing non-WebM codecs.
Also, add some constants for WebVTT codec ID strings so they
won't cause doctype to incorrectly change to matroska.

Change-Id: I4740a3e45b28a22e462601b9ce051aa01817dace
2016-04-28 08:44:14 -07:00
Frank Galligan
47f2843e79 Add parsing support for new features in CodecPrivate.
Adds support for parsing bit depth and chroma subsampling features.

BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1198

Change-Id: I8d11829f5d43a518cbe0e5c0bdd4fd37db7b6266
2016-04-27 09:27:24 -07:00
Frank Galligan
e3c9576716 Add VP9 level output to webm_info.
Removed building webm_info from Makefile.unix as it now requires c++11.

BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1188

Change-Id: Ia142f0c3cd580f397449d2ffa8788f78fb7faff0
2016-04-26 22:16:31 -07:00
Frank Galligan
de3234a87f Merge "Add class to gather VP9 level stats." 2016-04-26 15:29:49 +00:00
Tom Finegan
5cf549f582 cmake: Log compiler flag at check time.
Output the flag being checked before checking the flag to make it easier
to determine exactly which check failed.

Change-Id: I692f5287f985acb4a3061dd54f7c5a8729def83b
2016-04-21 16:56:12 -07:00
Frank Galligan
bbaaf2da8d Add class to gather VP9 level stats.
See http://www.webmproject.org/vp9/profiles/ for more information
on VP9 levels.

BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1188

Change-Id: I91448069bbd4740106a159014db6935365af75ca
2016-04-21 13:02:25 -07:00
Frank Galligan
8bb68c2b3e Add file to parse data from VP9 frames.
This class will parse and collect some data from VP9 frame
headers.

BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1188

Change-Id: Ie19e0f4a2f7e89d0378a66ce2e8e939250ddc383
2016-04-18 12:21:58 -07:00
Frank Galligan
a004fefc56 Merge "Add support for setting VP9 profile and level to sample_muxer." 2016-04-18 19:20:17 +00:00
Frank Galligan
58e33b3329 Merge "Add support to parse VP9 profile." 2016-04-18 19:20:04 +00:00
Frank Galligan
296429a7dc Add support to parse VP9 profile.
This is the VP9 profile contained in the CodecPrivate data.

Change-Id: If5fd5667bfc86ff596354457539da363367128db
2016-04-18 12:15:59 -07:00
Frank Galligan
df3412f68d Add support for setting VP9 profile and level to sample_muxer.
BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1179

Change-Id: I20ffc213764c3c1c35563178b6e8e1e0031760b6
2016-04-18 12:13:45 -07:00
Vignesh Venkatasubramanian
87832d487a mkvmuxer: Fix Segment::Finalize in kLive mode
Do not call Cluster::Finalize in kLive mode unless
accurate_cluster_duration_ is set.

Change-Id: Id2627b5df9eaee065e12d08b494ee02ae0a33564
2016-04-15 20:32:19 -07:00
Tom Finegan
6df3e5630e mkvmuxerutil.hpp: Add using directives for overloaded size utils.
Some downstream code using the EBML element size requires that
EbmlElementSize and EbmlMasterElementSize are accessible in the global
namespace.

Change-Id: I9d110b683e434c90f96ae7b35b35e79eb6a2335f
2016-04-14 17:16:31 -07:00
Tom Finegan
ec479287ff mkvmuxerutil: Revert to using mkvmuxertypes.
- The direct change to stdint.h types causes too much downstream
  churn. Need an intermediate step or a wrapper because quite a
  bit of user code explicitly casts args passed to mkvmuxerutil
  functions to types defined in mkvmuxertypes.
- Update call sites in mkvmuxer to avoid ambiguity errors.

Change-Id: I018445b3d8ab1da776ecdb19a290ac00af63c2cf
2016-04-14 12:58:38 -07:00
Frank Galligan
7d674468bd Merge "Add support to output Colour elements to webm_info." 2016-04-13 16:15:30 +00:00
Frank Galligan
a1dc4f2f22 Fix parsing of VP9 level.
The VP9 level is contained in the CodecPrivate data.

Change-Id: I65475363ee230b422a8cdce8172f6262cb3329e7
2016-04-12 23:00:03 -07:00