Commit Graph

44 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 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
Kyle Alexander 78aa230552 Adding tests utilizing the sample packager binary.
Change-Id: Id868c3cb00f418912329cafeb48c784795a13cd3
2014-07-23 22:55:54 +00:00
Thomas Inskip 79d3c4f4ec Hooked MPD flags up to MpdOptions.
Added calculation of availabilityStartTime MPD attribute.

Change-Id: I00876005c71f28ea83fb5d9ba0ad1f19f1d08e69
2014-06-28 11:28:05 +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 f609b2947c Key Rotation: Get the initial crypto index from first request
This change also updates the WidevineEncryptionKeySource to be able to support
KeyRotation enabled and disabled requests simultaneously.

Change-Id: I5178cafc0dbabbb64ac9af9969d3bf7d8117a4dd
2014-06-28 11:28:05 +00:00
KongQun Yang 33a87aa84b Support MediaInfo dump in packager app
VodMediaInfoDumpMuxerListener is also changed to manage the file
internally rather than take an opened file pointer. This change
simplifies the caller as the caller does not need to manage the media
info dump files any more.

Change-Id: Id9dcaf367c96ed13603b13b1e3705c687c948b07
2014-06-30 11:05:44 -07:00
KongQun Yang e60156a3dd Add --profile to set default options to ensure comformance
Change-Id: If114b9f10e029cb8ca53ae64c865a46558d1daca
2014-06-26 23:45:22 +00:00
KongQun Yang 956f483528 Retire single_packager
Packager has all the capabilities of single_packager, so we don't need
single_packager any more.

Change-Id: I3e4dad86eaaa7e798cc3b6cd54838328cd1b45c9
2014-06-23 11:23:25 -07:00
KongQun Yang 8cb3be74b1 Support mpd generation in packager app
Change-Id: I9dfa8ca254d3d3e0210feeecc7389f360ab4b6a7
2014-06-11 17:03:22 -07: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 1899d5c3b0 Add back Initialize which starts key fetching thread
The key production thread was started in constructor. The default http
fetcher might have already been used to fetch keys before it is modified
by set_http_fetcher. This could lead to flaky unittest.

Change-Id: I977b6450862d87ffeb5cb219bcd46b33d877e550
2014-06-05 18:21:13 +08:00
KongQun Yang cdf0aa178d Support configurable policy in Widevine encryption
Bug: 13658473
Change-Id: I90bbaa2e34687e7456c9a247d51c64cd91782891
2014-06-05 17:58:19 +08:00
Thomas Inskip d7d307ff56 Implemented multi-stream packager driver program.
Change-Id: I16e1f5f1e8863b09b642c94d4be565e309bdafb6
2014-06-04 17:30:50 -07:00
Rintaro Kuroiwa bbc77362e4 Fix MuxerOptions forward declaration
MuxerOptions is a struct but was forward declared as class.
This fixes the build when using clang.

Change-Id: I3b99252bc86a71ced27cd12aa2ab828e10a025e5
2014-05-28 09:44:33 -07: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 1f315ba921 Support key rotation in widevine encryption key source
Change-Id: I05ded15fa666119c86a1d3f1c99123b9cda60b49
2014-05-07 18:37:01 +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 e8e83cc37c Fix packager_main crash in Debug mode muxing clear video
Change-Id: I8bef6a2ebbfc47c7f60fbd2f549ba20cb1daf99c
2014-05-01 12:35:24 -07: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 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
Kongqun Yang f849630113 Clean up packager_main exiting message
The message will be printed only if output is missing and
dump_stream_info is false.

Change-Id: Ia3ecca961d84b15e45182e19fd90501156e1aa9c
2014-04-18 15:32:44 -07:00
Kongqun Yang 833f27f687 Make Muxer::Initialize and Muxer::Finalize private
User should not need to care about how and when to call these APIs.
Internal code should call them automatically.

Change-Id: Ibc85a709d4e82ecc7b477986cabf09dcfc2e100c
2014-04-10 19:56:35 +00:00
Kongqun Yang 2498da675a Rename MP4GeneralSegmenter and MP4VODSegmenter
Rename MP4GeneralSegmenter to MultiSegmentSegmenter and MP4VODSegmenter
to SingleSegmentSegmenter.

Also drop MP4 from MP4Fragmenter and MP4Segmenter.

Change-Id: I5cefb88164516ec3588e0e3333a16f05b6277e7b
2014-04-09 20:27:16 +00:00
Kongqun Yang e4a6cf4edd Add AES signing support to packager_main app
Add two new command line arguments: --aes_signing_key for AES signing
key (in hex) and --aes_signing_iv for AES signing iv (in hex). Also
change --signing_key_path to --rsa_signing_key_path.

Bug: 13582970

Change-Id: I66ba330a1a05e0f5def7987ac41d396dc92005ae
2014-04-01 18:19:31 +00:00
Kongqun Yang 25b1038f5d Enable warnings and warnings-as-errors
The warnings and warnings-as-errors are enabled by set chromium_code to
1. Chromium build disables warnings and warnings-as-errors by default
on external contents.

And fix the errors with them enabled. Mostly defined but not used,
sign-unsign comparison, unsigned string formatting, and return value not
used etc.

Change-Id: I305b63924955a84172e98e0ebfe5aba0f11bdb37
2014-03-28 22:24:49 +00:00
Kongqun Yang fddeb1feb1 Support for multiple audio/video tracks in a file
Remove --audio and --video command line options and replaced with
--stream. User can use --stream=video (default) to pull the first video
track from the source or --stream=audio to pull the first audio track.
The user may also use --stream={stream_id}, 0-based stream id to pull
the stream, e.g. --stream=0 for the first stream.

Change-Id: Ie1f93c2cc80a160a496b1d43ae3a658263d30cfc
2014-03-21 14:38:45 -07:00
Kongqun Yang c1a7fd9c4a Change output messages to make it more human readable
Also remove formatting using stream which is not recommended per Google
C++ style guide.

Change-Id: I3930f0a453acc0258876c08c4266dcbb13757ac8
2014-03-19 18:42:27 -07:00
Rintaro Kuroiwa f73f4bb773 Use default ContentProtection element specified by DASH for MP4
BUG: 13175714
TEST: media_event_unittest passes

Change-Id: I96a4ecaaf2a7152df21c1680949db74b6a47199f
2014-03-05 00:12:03 -08:00
Kongqun Yang b9f1996b68 Fix compilation errors after manifest update
Manifest was updated in CL 7debbbe19b158ea7377e229a17ec1d3d9d19d1b8
to point to Chromium LGKR CL 253526.

There are some API refactoring in base, which result in some code
changes in our packager source.

Change-Id: I52bf5a8a4f8fe0ebc566677efcd572332db8f618
2014-03-03 13:26:14 -08:00
Kongqun Yang b93f2020c8 Fix no ContentProtection element problem.
The original code used stream_info.is_encrypted() to check whether output
stream is encrypted; However, stream_info contains input stream
information and does not contain output stream infomation, which results
in incorrect status was passed to mpd generator. Fix the problem with
correct information from muxer.

Change on behalf of rkuroiwa after a discussion with him.

Bug: 12994813

Change-Id: I6e74b378a0fd7deedaaac166e913a66d312b8318
2014-02-20 01:22:09 +00:00
Kongqun Yang 58c4473d42 Add copyright information.
The information is generated by Edwin's copyright.py script with some
minor manual modifications.

Chromium's original copyright notice is not replaced.

Also add LICENSE file taken from
https://sites.google.com/a/google.com/ospo/releasing#TOC-BSD-License

Change-Id: I231f09af96a0a611b1ca81e95cab82e12d7f529b
2014-02-18 23:46:01 +00:00
Rintaro Kuroiwa 10ec2f0956 MPD generator driver program
Change-Id: I9f34efbb322c3315583ec0bddf7d48e5a4e22f92
2014-02-07 15:04:02 -08:00
Rintaro Kuroiwa e65e2ea220 Add driver program flags for dumping MediaInfo
Change-Id: I314027b799271e95fc12b8716f5977be00013737
2014-02-07 13:47:06 -08:00
Kongqun Yang 522048b0d9 Add a muxer option to normalize PTS to start from 0
Some players do not like non-zero starting PTS. We need to do PTS
normalization to make it work on those players.

Bug: 12686658

Change-Id: I0958c25395e4ea87d8208db9a5f6c5816827eb99
2014-01-24 22:34:27 +00:00
Kongqun Yang f05040fa18 Fix a misspelling of the flags name.
Change-Id: I0cd889ed3b31e722860c313536b01449746bd71c
2014-01-24 13:21:33 -08:00
Kongqun Yang 6957a4ac07 Implement packager driving program packager_main
I am not sure whether it is a good idea to define command line flags
in the actual source. I created several flags definition .h to host
these flags for now.

Change-Id: Ib6ca60d8656e8015a64dafff8e0a98a47676bbd2
2014-01-22 11:51:28 -08:00