Commit Graph

31 Commits

Author SHA1 Message Date
KongQun Yang f907cb18f8 Clean up include files for int8_t,...int64_t
Use <stdint.h> rather than "base/basictypes.h".

This is a follow up to previous CL.

Also get rid of ku?intxx(min|max) and use std::numeric_limits as per
base/basictypes.h, it is DEPRECATED too.

The change was made using the below commands with some adjustments like
include order etc:
> find {media,app,mpd} -type f -exec sed -r -i
  's/"base\/basictypes.h"/<stdint.h>/' {} \;
> find {media,app,mpd} -type f -exec sed -r -i
  's/k(u?int[0-9]+)(min|max)/std::numeric_limits<\1_t>::\2\(\)/g' {} \;

Change-Id: I6347723989c3d66e64ffcc54123b5c182b8c71b7
2014-10-01 00:44:07 +00:00
KongQun Yang d1068964ae Replace u?int(8|16|32|64) with u?int(8|16|32|64)_t
u?int(8|16|32|64) are DEPRECATED per base/basictypes.h.

The change was made using the below commands with some adjustments for
pretty formatting:
> find {media,app,mpd} -name '*.proto' -prune -o -type f -exec sed -r -i
's/\b(u?int[0-9]+)\b/\1_t/g' {} \;
> git clang-format

Change-Id: I99d2e5e0fbbdbc5d7b9eb121b4622de780413f53
2014-09-30 17:39:07 -07:00
KongQun Yang 3114ee945d Add namespace edash_packager to packager codes
For mpd codes, rename dash_packager to edash_packager; for media codes,
add namespace edash_packager.

Change-Id: I1120e6110c734cd02bdbe15f1cf7abddcdfdd7ea
2014-09-22 12:51:40 -07:00
Thomas Inskip 7b1640a8f7 Added Widevine and fixed key decryption.
Change-Id: Ia29ce678c0e64e886cdd92bbfda727768356fd21
2014-09-05 10:38:21 -07:00
Thomas Inskip 65e558b19c KeySource changes to support media decryption.
Renamed EncryptionKeySource and WidevineEncryptionKeySource to KeySource and
WidevineKeySource respectively.

Replaced Initialize method with FetchKeys.

Added unit tests.

content_id parameter is now binary. Specified in command line with hex string.

Change-Id: I8010ca62d036cefb3a7c105e0eefee25bbf06d61
2014-09-03 12:06:58 -07:00
KongQun Yang f4d0ef432e Remove "testing" from gtest/gmock include header
This is to remove dependency on Chromium directory layouts, to make it
easier for integration.

Change-Id: If23512c9e4a70462d70ff965e59339a33541746c
2014-08-21 18:04:44 -07:00
KongQun Yang 05db9e02b9 Generate sidx box only if there are more than one entries
Change-Id: If7d7440f18e8b50a3261e18138b1a40bd754aba7
2014-08-01 01:06:33 +00:00
KongQun Yang 3e6190ec2b Deprecate normalize_presentation_timestamp
Force earliest_presentation_timestamp to start from 0 by default for
single segment segmenter.

Change-Id: Icfc14e27051c6edfb7a86559045c50a0ce51a62e
2014-07-23 22:55:54 +00:00
KongQun Yang 66f155502d Fix packager failure if there is only one sample in a fragment
That is a very corner corner case.

Change-Id: I45bc6c2d41db2a666a4ad997e4bf2eb17843e3ea
2014-07-23 22:55:54 +00:00
KongQun Yang 301f8c134d Enable more compilation checks in clang
These checks were disabled in Chromium due to historical reason.

Also fix compilation errors as a result of the above mentioned change.

Change-Id: I5d240f2f11aa5920598f954d696a15bdcbf78fd8
2014-07-09 21:39:57 +00:00
Thomas Inskip efe52e62dc Implemented name/value pair stream descriptors.
Implemented user-specified bandwidth.

Change-Id: If01f26867d4285bcbc899310d3f1b98b928bed89
2014-06-30 18:34:18 -07:00
KongQun Yang 50aea3e6f6 Set fragment decoding time from input sample dts
For live streams, we cannot assume that the input decoding timestamp
starts from zero.

Also don't overwrite |normalize_presentation_timestamp| if the user
does not want to enable it for on-demand profile.

Change-Id: I1abe7926e0b25eb11dee021be964d126484d4036
2014-06-30 18:01:59 -07:00
KongQun Yang 2af92f67d2 More fix for issues on 32-bit OS
Somehow it worked fine on 32-bit Ubuntu but not on 32-bit Redhat.

Change-Id: Icfa4ec651dedd74edadf5a65f997f649c2693115
2014-06-26 23:45:22 +00:00
KongQun Yang 0f49af6cc1 Fix problems on 32-bit fresh linux box
There are two different problems:

1. int64/uint64 formatting: %lu formats unsigned long. However, the
definition of long is different on 32-bit machine and 64-bit machine.
We need to use a macro to format int64/uint64 correctly.

2. The packager target is dependent on openssl.

Change-Id: I5d51a500c3cb8bcd4b4049ab7ec5a985ac486a76
2014-06-23 13:48:41 -07:00
KongQun Yang b0c880e03f Check InitializeFragments status in segmenter
Change-Id: I203c9befcaba389958d789fa3c716349636d5b8c
2014-06-17 21:10:01 +00:00
KongQun Yang 5b1980651f Support segment template identifier $Time$
Also add support for format tags.

Also change default fragment_duration to 10s, i.e. to have the same
value as --segment_duration. So by default, only one fragment per
(sub)segment is generated.

Change-Id: I21123723c3998b656037a397eb7b58b3d91721bb
2014-06-09 18:09:12 -07:00
KongQun Yang 1d920a1a4e Media code change to support live mpd
Change-Id: I24ca877ec62e69df5dbf3c9ede54da4df189dbc4
2014-06-06 10:38:48 +08:00
KongQun Yang 6837ac45b7 Implement MpdNotifyMuxerListener
Change-Id: I08742839c2be5e5da104914ec841b8c5dd57f0b7
2014-06-05 18:51:52 +08:00
Thomas Inskip 7fe5b5171a Renamed packager_main to single_packager.
Did some re-factoring to share code with upcoming (multi stream) packager.

Change-Id: I2b3845e48ba6aa63a95ecc276abcb52c8355d8d5
2014-05-27 15:42:10 -07:00
KongQun Yang e7fe62763d Add 'pssh' box for clear lead fragments as well
This is to workaround a Chrome limitation that CDM must be initialized
before starting the playback. CDM can only be initialized with a valid
'pssh'.

Change-Id: Ia34e90dac42abbcdf0193fe4e3c971c87debdd42
2014-05-15 10:59:46 -07:00
KongQun Yang b25834a910 Implement EncryptingFragmenter from Fragmenter
Extract encryption related handlings from Fragmenter and move into new
class EncrpytingFragmenter.

Change-Id: Id42493cd321fd7e306f8ce522c7ff04990965256
2014-05-15 16:55:01 +00:00
KongQun Yang 49dd6e49bb Always generate version 1 SampleGroupDescription box
Version 0 is obsoleted. Also fixes unittest typos.

Change-Id: I0e536ba316ac07ce939dae71752e00db19e3db58
2014-05-08 22:34:22 +00:00
KongQun Yang 80a60b7ef2 Support 64 bit mdat box size
Change-Id: I38be77d2d13eceaeeda6f3ff270c8d7cd1d2a300
2014-05-08 21:55:55 +00:00
Kongqun Yang 1773d08b8d Add new flag max_sd_pixels to determine SD or HD track
Change-Id: If841af98345177cf1832b9e5b91148168b000f44
2014-05-05 11:35:44 -07:00
Kongqun Yang 53287e5fe7 Add m2ts and audio tests in packager_test
Change-Id: I11cc65a2baa69bc5e3bc022027bca6712f810f1a
2014-05-02 22:16:21 +00:00
Kongqun Yang 30cb6948e5 Add MediaParser::Flush to flush the parser
Change-Id: Ic12a045dda47ccd270c8c3e9e83768e04a53ad58
2014-04-29 20:33:04 +00:00
Kongqun Yang 50ed026751 Support key rotation when generating MP4 fragments
Change-Id: I472e03a2d41ee450c12c0fe3012904628d6893e7
2014-04-23 12:54:40 -07:00
Kongqun Yang 9076411044 Rename EncryptorSource to EncryptionKeySource
Change-Id: I0a3d0e205922bbb4015955e04d51b7a9a4fa86e1
2014-04-23 12:45:18 -07:00
Kongqun Yang f059d926d7 Update client of EncryptorSource due to refactoring
This CL also includes two related changes:
  1. Support serialization of raw PSSH box;
  2. Refactor segmenter interface a bit.

Change-Id: I668aa01a5a5ff524ad6fe74976339a3fd499120a
2014-04-23 12:35:52 -07:00
Thomas Inskip cbf4978ffa Modified H.264 elementary stream parsing code to work with remux framework.
Change-Id: I81dfe0952073c4a5cd6f5fcaf14fe21050d26cb6
2014-04-22 12:49:41 -07:00
Thomas Inskip 5f99651223 Moved mp4 code to new "formats" directory to match Chromium source tree.
(second attempt due to conflicts).

Change-Id: I2143921bcacdbaa6cfcaf59602713294b4b1f6ee
2014-04-21 12:05:32 -07:00