Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to get audio language from PMT? #369

Open
fpgamaster opened this issue Apr 4, 2018 · 8 comments
Open

How to get audio language from PMT? #369

fpgamaster opened this issue Apr 4, 2018 · 8 comments
Labels
flag: seeking PR We are actively seeking PRs for this; we do not currently expect the core team will resolve this type: enhancement New feature or request
Milestone

Comments

@fpgamaster
Copy link

Hi All,

When input is MPEG TS over UDP, the language information for audio streams could be available in PMT.
Is there a way to use this information right now?

Regards

@vaage vaage added the type: question A question from the community label Apr 4, 2018
@kqyang
Copy link
Contributor

kqyang commented Apr 4, 2018

@fpgamaster Are you referring to possible "ISO639 Language Descriptor" in PMT? That is not parsed right now. Do you have a sample content with this descriptor?

Also, we love contributions. If you'd like to contribute, here is the places you'll need to modify:

https://github.com/google/shaka-packager/blob/82e0fd2095632e19ef377a89721bd0d99d90e17e/packager/media/formats/mp2t/ts_section_pmt.cc#L72

https://github.com/google/shaka-packager/blob/82e0fd2095632e19ef377a89721bd0d99d90e17e/packager/media/formats/mp2t/mp2t_media_parser.cc#L274

@kqyang kqyang added type: enhancement New feature or request and removed type: question A question from the community labels Apr 4, 2018
@kqyang kqyang added this to the Backlog milestone Apr 4, 2018
@fpgamaster
Copy link
Author

@kqyang Yes, I am referring to "ISO639 Language Descriptor". A sample content could be obtained from any DVB C/T/S network. I will try to record a sample content with multiple audios and will post a link in few days.
BTW: ffmpeg should generate DVB tables when the output is mpegts and maybe using e.g. '-metadata:s:a:0 language=eng' as a option will do the trick.

@kqyang kqyang added the flag: seeking PR We are actively seeking PRs for this; we do not currently expect the core team will resolve this label Apr 6, 2018
@fpgamaster
Copy link
Author

fpgamaster commented Apr 11, 2018

@kqyang Feel free to modify the following patch. It is really a quick and dirty solution for the functionality we currently need. Enjoy!

diff --git a/packager/media/formats/mp2t/es_parser_audio.cc b/packager/media/formats/mp2t/es_parser_audio.cc
index 9599563d73..eec0a2dab4 100644
--- a/packager/media/formats/mp2t/es_parser_audio.cc
+++ b/packager/media/formats/mp2t/es_parser_audio.cc
@@ -80,11 +80,13 @@ static bool LookForSyncWord(const uint8_t* raw_es,
 
 EsParserAudio::EsParserAudio(uint32_t pid,
                              TsStreamType stream_type,
+                             std::string lang,
                              const NewStreamInfoCB& new_stream_info_cb,
                              const EmitSampleCB& emit_sample_cb,
                              bool sbr_in_mimetype)
     : EsParser(pid),
       stream_type_(stream_type),
+      lang_(lang),
       new_stream_info_cb_(new_stream_info_cb),
       emit_sample_cb_(emit_sample_cb),
       sbr_in_mimetype_(sbr_in_mimetype) {
@@ -213,7 +215,7 @@ bool EsParserAudio::UpdateAudioConfiguration(const AudioHeader& audio_header) {
       audio_specific_config.data(), audio_specific_config.size(),
       kAacSampleSizeBits, audio_header.GetNumChannels(),
       extended_samples_per_second, 0 /* seek preroll */, 0 /* codec delay */,
-      0 /* max bitrate */, 0 /* avg bitrate */, std::string(), false);
+      0 /* max bitrate */, 0 /* avg bitrate */, lang_, false);
 
   DVLOG(1) << "Sampling frequency: " << samples_per_second;
   DVLOG(1) << "Extended sampling frequency: " << extended_samples_per_second;
diff --git a/packager/media/formats/mp2t/es_parser_audio.h b/packager/media/formats/mp2t/es_parser_audio.h
index e92a9fefb0..69b1ae2375 100644
--- a/packager/media/formats/mp2t/es_parser_audio.h
+++ b/packager/media/formats/mp2t/es_parser_audio.h
@@ -29,6 +29,7 @@ class EsParserAudio : public EsParser {
  public:
   EsParserAudio(uint32_t pid,
                 TsStreamType stream_type,
+                std::string lang,
                 const NewStreamInfoCB& new_stream_info_cb,
                 const EmitSampleCB& emit_sample_cb,
                 bool sbr_in_mimetype);
@@ -57,6 +58,8 @@ class EsParserAudio : public EsParser {
   const TsStreamType stream_type_;
   std::unique_ptr<AudioHeader> audio_header_;
 
+  std::string lang_;
+
   // Callbacks:
   // - to signal a new audio configuration,
   // - to send ES buffers.
diff --git a/packager/media/formats/mp2t/mp2t_media_parser.cc b/packager/media/formats/mp2t/mp2t_media_parser.cc
index 4ecb9dd76a..acd95e89f2 100644
--- a/packager/media/formats/mp2t/mp2t_media_parser.cc
+++ b/packager/media/formats/mp2t/mp2t_media_parser.cc
@@ -273,10 +273,12 @@ void Mp2tMediaParser::RegisterPmt(int program_number, int pmt_pid) {
 
 void Mp2tMediaParser::RegisterPes(int pmt_pid,
                                   int pes_pid,
-                                  int stream_type) {
+                                  int stream_type,
+                                  std::string lang) {
   DVLOG(1) << "RegisterPes:"
            << " pes_pid=" << pes_pid
-           << " stream_type=" << std::hex << stream_type << std::dec;
+           << " stream_type=" << std::hex << stream_type << std::dec
+           << " lang=" << lang;
   std::map<int, std::unique_ptr<PidState>>::iterator it = pids_.find(pes_pid);
   if (it != pids_.end())
     return;
@@ -300,7 +302,7 @@ void Mp2tMediaParser::RegisterPes(int pmt_pid,
     case TsStreamType::kAdtsAac:
     case TsStreamType::kAc3:
       es_parser.reset(new EsParserAudio(
-          pes_pid, static_cast<TsStreamType>(stream_type),
+          pes_pid, static_cast<TsStreamType>(stream_type), lang,
           base::Bind(&Mp2tMediaParser::OnNewStreamInfo, base::Unretained(this)),
           base::Bind(&Mp2tMediaParser::OnEmitSample, base::Unretained(this)),
           sbr_in_mimetype_));
diff --git a/packager/media/formats/mp2t/mp2t_media_parser.h b/packager/media/formats/mp2t/mp2t_media_parser.h
index 2ad7fbd733..ed6605fff7 100644
--- a/packager/media/formats/mp2t/mp2t_media_parser.h
+++ b/packager/media/formats/mp2t/mp2t_media_parser.h
@@ -51,7 +51,7 @@ class Mp2tMediaParser : public MediaParser {
   // Possible values for |media_type| are defined in:
   // ISO-13818.1 / ITU H.222 Table 2.34 "Media type assignments".
   // |pes_pid| is part of the Program Map Table refered by |pmt_pid|.
-  void RegisterPes(int pmt_pid, int pes_pid, int media_type);
+  void RegisterPes(int pmt_pid, int pes_pid, int media_type, std::string lang);
 
   // Callback invoked each time the audio/video decoder configuration is
   // changed.
diff --git a/packager/media/formats/mp2t/ts_section_pmt.cc b/packager/media/formats/mp2t/ts_section_pmt.cc
index 8ba854cb2e..559d7ade75 100644
--- a/packager/media/formats/mp2t/ts_section_pmt.cc
+++ b/packager/media/formats/mp2t/ts_section_pmt.cc
@@ -76,6 +76,7 @@ bool TsSectionPmt::ParsePsiSection(BitReader* bit_reader) {
   // (4 bytes = size of the CRC).
   int pid_map_end_marker = section_start_marker - section_length + 4;
   std::map<int, int> pid_map;
+  std::map<int, std::string> pid_lang;
   while (static_cast<int>(bit_reader->bits_available()) >
          8 * pid_map_end_marker) {
     int stream_type;
@@ -95,7 +96,29 @@ bool TsSectionPmt::ParsePsiSection(BitReader* bit_reader) {
 
     // Read the ES info descriptors.
     // Defined in section 2.6 of ISO-13818.
-    RCHECK(bit_reader->SkipBits(8 * es_info_length));
+    int descriptor_tag;
+    int descriptor_length;
+    char lang[] = { 'u', 'n', 'd', '\0' };
+
+    while (es_info_length) {
+	RCHECK(bit_reader->ReadBits(8, &descriptor_tag));
+	RCHECK(bit_reader->ReadBits(8, &descriptor_length));
+
+	if (descriptor_tag == 10) {
+		RCHECK(bit_reader->ReadBits(8, &lang[0]));	// ISO_639_language_code
+		RCHECK(bit_reader->ReadBits(8, &lang[1]));
+		RCHECK(bit_reader->ReadBits(8, &lang[2]));
+		RCHECK(bit_reader->SkipBits(8));		// audio_type
+
+	}
+	else {
+		RCHECK(bit_reader->SkipBits(8 * descriptor_length));
+	}
+
+	es_info_length -= 2 + descriptor_length;
+    }
+    pid_lang.insert(std::pair<int, std::string>(pid_es, std::string(lang)));
+
   }
 
   // Read the CRC.
@@ -105,7 +128,7 @@ bool TsSectionPmt::ParsePsiSection(BitReader* bit_reader) {
   // Once the PMT has been proved to be correct, register the PIDs.
   for (std::map<int, int>::iterator it = pid_map.begin();
        it != pid_map.end(); ++it)
-    register_pes_cb_.Run(it->first, it->second);
+    register_pes_cb_.Run(it->first, it->second, pid_lang[it->first]);
 
   return true;
 }
diff --git a/packager/media/formats/mp2t/ts_section_pmt.h b/packager/media/formats/mp2t/ts_section_pmt.h
index 7b14d82b70..8e1a5ade6d 100644
--- a/packager/media/formats/mp2t/ts_section_pmt.h
+++ b/packager/media/formats/mp2t/ts_section_pmt.h
@@ -18,7 +18,7 @@ class TsSectionPmt : public TsSectionPsi {
   // RegisterPesCb::Run(int pes_pid, int stream_type);
   // Stream type is defined in
   // "Table 2-34 – Stream type assignments" in H.222
-  typedef base::Callback<void(int, int)> RegisterPesCb;
+  typedef base::Callback<void(int, int, std::string)> RegisterPesCb;
 
   explicit TsSectionPmt(const RegisterPesCb& register_pes_cb);
   ~TsSectionPmt() override;

@kqyang
Copy link
Contributor

kqyang commented Apr 11, 2018

@fpgamaster Thanks for the patch. It is quite good I think, with only a few minor nits. Do you want to submit a pull request for this?

@fpgamaster
Copy link
Author

@kqyang Yes, it will be nice!

@kqyang
Copy link
Contributor

kqyang commented Jul 9, 2018

@fpgamaster Do you still plan to submit a pull request for this feature?

Thanks.

@kqyang
Copy link
Contributor

kqyang commented Nov 28, 2018

@sammirata volunteers to pick up this issue, see #518. Thank you @sammirata. Appreciated!

modernletter added a commit to modernletter/shaka-packager that referenced this issue Nov 27, 2023
…haka-project#369)

This adds support for some MPEG-TS PMT elementary stream descriptors:
- ISO639 Language Descriptor providing language code and audio type
- Maximum Bitrate Descriptor providing peak stream bandwidth

Those metadata are propagated to StreamInfo structures:
- StreamInfo.language field
- AudioStreamMetadata.max_bitrate field for audio streams
- audio type is currently not propageted - field has to be added

Test vector file containg those descriptors is provided.
modernletter added a commit to modernletter/shaka-packager that referenced this issue Dec 1, 2023
…haka-project#369)

This adds support for some MPEG-TS PMT elementary stream descriptors:
- ISO639 Language Descriptor providing language code and audio type
- Maximum Bitrate Descriptor providing peak stream bandwidth

Those metadata are propagated to StreamInfo structures:
- StreamInfo.language field
- AudioStreamMetadata.max_bitrate field for audio streams
- audio type is currently not propageted - field has to be added

Test vector file containg those descriptors is provided.
@modernletter
Copy link
Contributor

I would like to pick and extend this issue. PMT can be source not only for audio language, but also other metadata:

  • language for other types of stream (e.g. subtitles, teletext) (
  • audio type (a.k.a. audio description, but also clean audio)
  • maximum bitrate - which is not very interesting, but better than default 0 provided by EsParserAudio

For example this is part of tstable output with stream containing these descriptors (ttable is part of tsduck suite, very useful tool to analyse/modify transport streams :

    Elementary stream: type 0x0F (MPEG-2 AAC Audio), PID: 484 (0x01E4)
    - Descriptor 0: ISO-639 Language (0x0A, 10), 4 bytes
      Language: pol, Type: 0x00 (undefined)
    - Descriptor 1: Maximum Bitrate (0x0E, 14), 3 bytes
      Maximum bitrate: 0x000001BB (443), 177,200 bits/second
    Elementary stream: type 0x0F (MPEG-2 AAC Audio), PID: 485 (0x01E5)
    - Descriptor 0: ISO-639 Language (0x0A, 10), 4 bytes
      Language: mis, Type: 0x03 (visual impaired commentary)
    - Descriptor 1: Maximum Bitrate (0x0E, 14), 3 bytes
      Maximum bitrate: 0x000001BB (443), 177,200 bits/second
    Elementary stream: type 0x86 (SCTE 35 Splice Info), PID: 500 (0x01F4)
    Elementary stream: type 0x06 (MPEG-2 PES private data), PID: 32 (0x0020)
    - Descriptor 0: Teletext (0x56, 86), 10 bytes
      Language: pol, Type: 1 (0x01)
      Type: Initial Teletext page
      Magazine: 1, page: 0, full page: 100
      Language: pol, Type: 2 (0x02)
      Type: Teletext subtitles
      Magazine: 7, page: 119, full page: 777
    - Descriptor 1: Maximum Bitrate (0x0E, 14), 3 bytes
      Maximum bitrate: 0x00000235 (565), 226,000 bits/second

I would like to propose a PR to parse these descriptors, with test vector.

Currently there is no field for audio type in AudioStreamInfo. If added, it could be used for e.g. auto-set MPEG-DASH role/accessibility elements or HLS media characteristics attribute. Such field should have some abstract values, to not be bounded with MPEG-TS audio type. If that can be agreed, I would also do that.

modernletter added a commit to modernletter/shaka-packager that referenced this issue Dec 4, 2023
…haka-project#369)

This adds support for some MPEG-TS PMT elementary stream descriptors:
- ISO639 Language Descriptor providing language code and audio type
- Maximum Bitrate Descriptor providing peak stream bandwidth

Those metadata are propagated to StreamInfo structures:
- StreamInfo.language field
- AudioStreamMetadata.max_bitrate field for audio streams
- audio type is currently not propageted - field has to be added

Test vector file containing those descriptors is provided.
modernletter added a commit to modernletter/shaka-packager that referenced this issue Dec 4, 2023
…haka-project#369)

This adds support for some MPEG-TS PMT elementary stream descriptors:
- ISO639 Language Descriptor providing language code and audio type
- Maximum Bitrate Descriptor providing peak stream bandwidth

Those metadata are propagated to StreamInfo structures:
- StreamInfo.language field
- AudioStreamMetadata.max_bitrate field for audio streams
- audio type is currently not propageted - field has to be added

Test vector file containing those descriptors is provided.
modernletter added a commit to modernletter/shaka-packager that referenced this issue Dec 4, 2023
…haka-project#369)

This adds support for some MPEG-TS PMT elementary stream descriptors:
- ISO639 Language Descriptor providing language code and audio type
- Maximum Bitrate Descriptor providing peak stream bandwidth

Those metadata are propagated to StreamInfo structures:
- StreamInfo.language field
- AudioStreamMetadata.max_bitrate field for audio streams
- audio type is currently not propageted - field has to be added

Test vector file containing those descriptors is provided.
modernletter added a commit to modernletter/shaka-packager that referenced this issue Dec 4, 2023
…haka-project#369)

This adds support for some MPEG-TS PMT elementary stream descriptors:
- ISO639 Language Descriptor providing language code and audio type
- Maximum Bitrate Descriptor providing peak stream bandwidth

Those metadata are propagated to StreamInfo structures:
- StreamInfo.language field
- AudioStreamMetadata.max_bitrate field for audio streams
- audio type is currently not propageted - field has to be added

Test vector file containing those descriptors is provided.
modernletter added a commit to modernletter/shaka-packager that referenced this issue Dec 4, 2023
…haka-project#369)

This adds support for some MPEG-TS PMT elementary stream descriptors:
- ISO639 Language Descriptor providing language code and audio type
- Maximum Bitrate Descriptor providing peak stream bandwidth

Those metadata are propagated to StreamInfo structures:
- StreamInfo.language field
- AudioStreamMetadata.max_bitrate field for audio streams
- audio type is currently not propageted - field has to be added

Test vector file containing those descriptors is provided.
joeyparrish pushed a commit that referenced this issue Feb 8, 2024
…369) (#1311)

Part of #369

This adds read support for some MPEG-TS PMT elementary stream
descriptors:
- ISO639 Language Descriptor providing language code and audio type
- Maximum Bitrate Descriptor providing peak stream bandwidth

Those metadata are propagated to StreamInfo structures:
- StreamInfo.language field
- AudioStreamMetadata.max_bitrate field for audio streams
- audio type is currently not propagated - corresponding field has to be
added to AudioStreamMetadata

Test vector file containing those descriptors is provided.
joeyparrish pushed a commit to joeyparrish/shaka-packager that referenced this issue Mar 12, 2024
🤖 I have created a release *beep* *boop*
---


##
[4.0.0](v3.0.2...v4.0.0)
(2024-03-12)


### ⚠ BREAKING CHANGES

* Update all dependencies
* Drop Python 2 support in all scripts
* Replace glog with absl::log, tweak log output and flags
* Replace gyp build system with CMake

### Features

* Add input support for EBU Teletext in MPEG-TS
([shaka-project#1344](https://github.com/joeyparrish/shaka-packager/issues/1344))
([71c175d](71c175d))
* Add install target to build system
([3e71302](3e71302))
* Add PlayReady support in HLS.
([shaka-project#1011](https://github.com/joeyparrish/shaka-packager/issues/1011))
([96efc5a](96efc5a))
* add startwithSAP/subsegmentstartswithSAP for audio tracks
([shaka-project#1346](https://github.com/joeyparrish/shaka-packager/issues/1346))
([d23cce8](d23cce8))
* Add support for ALAC codec
([shaka-project#1299](https://github.com/joeyparrish/shaka-packager/issues/1299))
([b68ec87](b68ec87))
* Add support for single file TS for HLS
([shaka-project#934](https://github.com/joeyparrish/shaka-packager/issues/934))
([4aa4b4b](4aa4b4b))
* Add support for the EXT-X-START tag
([shaka-project#973](https://github.com/joeyparrish/shaka-packager/issues/973))
([76eb2c1](76eb2c1))
* Add xHE-AAC support
([shaka-project#1092](https://github.com/joeyparrish/shaka-packager/issues/1092))
([5d998fc](5d998fc))
* Allow LIVE UDP WebVTT input
([shaka-project#1349](https://github.com/joeyparrish/shaka-packager/issues/1349))
([89376d3](89376d3))
* **DASH:** Add Label element.
([shaka-project#1175](https://github.com/joeyparrish/shaka-packager/issues/1175))
([b1c5a74](b1c5a74))
* **DASH:** Add video transfer characteristics.
([shaka-project#1210](https://github.com/joeyparrish/shaka-packager/issues/1210))
([8465f5f](8465f5f))
* default text zero bias
([shaka-project#1330](https://github.com/joeyparrish/shaka-packager/issues/1330))
([2ba67bc](2ba67bc))
* Drop Python 2 support in all scripts
([3e71302](3e71302))
* Generate the entire AV1 codec string when the colr atom is present
([shaka-project#1205](https://github.com/joeyparrish/shaka-packager/issues/1205))
([cc9a691](cc9a691)),
closes
[shaka-project#1007](https://github.com/joeyparrish/shaka-packager/issues/1007)
* HLS / DASH support forced subtitle
([shaka-project#1020](https://github.com/joeyparrish/shaka-packager/issues/1020))
([f73ad0d](f73ad0d))
* Move all third-party deps into git submodules
([shaka-project#1083](https://github.com/joeyparrish/shaka-packager/issues/1083))
([3e71302](3e71302))
* order streams in manifest based on command-line order
([shaka-project#1329](https://github.com/joeyparrish/shaka-packager/issues/1329))
([aad2a12](aad2a12))
* Parse MPEG-TS PMT ES language and maximum bitrate descriptors
([shaka-project#369](https://github.com/joeyparrish/shaka-packager/issues/369))
([shaka-project#1311](https://github.com/joeyparrish/shaka-packager/issues/1311))
([c09eb83](c09eb83))
* Portable, fully-static release executables on Linux
([shaka-project#1351](https://github.com/joeyparrish/shaka-packager/issues/1351))
([9be7c2b](9be7c2b))
* Replace glog with absl::log, tweak log output and flags
([3e71302](3e71302))
* Replace gyp build system with CMake
([3e71302](3e71302)),
closes
[shaka-project#1047](https://github.com/joeyparrish/shaka-packager/issues/1047)
* Respect the file mode for HttpFiles
([shaka-project#1081](https://github.com/joeyparrish/shaka-packager/issues/1081))
([3e71302](3e71302))
* This patch adds support for DTS:X Profile 2 audio in MP4 files.
([shaka-project#1303](https://github.com/joeyparrish/shaka-packager/issues/1303))
([07f780d](07f780d))
* Update all dependencies
([3e71302](3e71302))
* Write colr atom to muxed mp4
([shaka-project#1261](https://github.com/joeyparrish/shaka-packager/issues/1261))
([f264bef](f264bef)),
closes
[shaka-project#1202](https://github.com/joeyparrish/shaka-packager/issues/1202)


### Bug Fixes

* Accept 100% when parsing WEBVTT regions
([shaka-project#1006](https://github.com/joeyparrish/shaka-packager/issues/1006))
([e1b0c7c](e1b0c7c)),
closes
[shaka-project#1004](https://github.com/joeyparrish/shaka-packager/issues/1004)
* Add missing &lt;cstdint&gt; includes
([shaka-project#1306](https://github.com/joeyparrish/shaka-packager/issues/1306))
([ba5c771](ba5c771)),
closes
[shaka-project#1305](https://github.com/joeyparrish/shaka-packager/issues/1305)
* Add missing limits header
([efbca39](efbca39))
* Always log to stderr by default
([shaka-project#1350](https://github.com/joeyparrish/shaka-packager/issues/1350))
([35c2f46](35c2f46)),
closes
[shaka-project#1325](https://github.com/joeyparrish/shaka-packager/issues/1325)
* AudioSampleEntry size caluations due to bad merge
([shaka-project#1354](https://github.com/joeyparrish/shaka-packager/issues/1354))
([615720e](615720e))
* **CI:** Add Mac-arm64 to build matrix
([shaka-project#1359](https://github.com/joeyparrish/shaka-packager/issues/1359))
([c456ad6](c456ad6))
* **CI:** Add missing Linux arm64 builds to release
([9c033b9](9c033b9))
* dash_roles add role=description for DVS audio per DASH-IF-IOP-v4.3
([shaka-project#1054](https://github.com/joeyparrish/shaka-packager/issues/1054))
([dc03952](dc03952))
* Don't close upstream on HttpFile::Flush
([shaka-project#1201](https://github.com/joeyparrish/shaka-packager/issues/1201))
([53d91cd](53d91cd)),
closes
[shaka-project#1196](https://github.com/joeyparrish/shaka-packager/issues/1196)
* duplicate representation id for TTML when forced ordering is on
([shaka-project#1364](https://github.com/joeyparrish/shaka-packager/issues/1364))
([0fd815a](0fd815a)),
closes
[shaka-project#1362](https://github.com/joeyparrish/shaka-packager/issues/1362)
* duration formatting and update mpd testdata to reflect new format
([shaka-project#1320](https://github.com/joeyparrish/shaka-packager/issues/1320))
([56bd823](56bd823))
* Explicitly signal the lack of CEA captions in HLS
([d48bf0f](d48bf0f)),
closes [shaka-project#922](https://github.com/joeyparrish/shaka-packager/issues/922)
* Fix build errors related to std::numeric_limits
([shaka-project#972](https://github.com/joeyparrish/shaka-packager/issues/972))
([9996c73](9996c73))
* Fix build on FreeBSD
([shaka-project#1287](https://github.com/joeyparrish/shaka-packager/issues/1287))
([3e71302](3e71302))
* Fix clang build
([shaka-project#1288](https://github.com/joeyparrish/shaka-packager/issues/1288))
([3e71302](3e71302))
* Fix crash in static-linked linux builds
([e2d66b3](e2d66b3)),
closes [shaka-project#996](https://github.com/joeyparrish/shaka-packager/issues/996)
* Fix failure fetching encryption keys
([7392d80](7392d80))
* Fix failure on very short WebVTT files
([shaka-project#1216](https://github.com/joeyparrish/shaka-packager/issues/1216))
([dab165d](dab165d)),
closes
[shaka-project#1217](https://github.com/joeyparrish/shaka-packager/issues/1217)
* Fix handling of non-interleaved multi track FMP4 files
([shaka-project#1214](https://github.com/joeyparrish/shaka-packager/issues/1214))
([dcf3225](dcf3225)),
closes
[shaka-project#1213](https://github.com/joeyparrish/shaka-packager/issues/1213)
* Fix issues with `collections.abc` in Python 3.10+
([shaka-project#1188](https://github.com/joeyparrish/shaka-packager/issues/1188))
([80e0240](80e0240)),
closes
[shaka-project#1192](https://github.com/joeyparrish/shaka-packager/issues/1192)
* Fix local files with UTF8 names
([shaka-project#1246](https://github.com/joeyparrish/shaka-packager/issues/1246))
([3e71302](3e71302))
* Fix missing newline at the end of usage
([shaka-project#1352](https://github.com/joeyparrish/shaka-packager/issues/1352))
([6276584](6276584))
* Fix Python 3.10+ compatibility in scripts
([3e71302](3e71302))
* Fix tags in official Docker images and binaries
([73a85ce](73a85ce)),
closes
[shaka-project#1366](https://github.com/joeyparrish/shaka-packager/issues/1366)
* Fix uninitialized value found by Valgrind
([shaka-project#1336](https://github.com/joeyparrish/shaka-packager/issues/1336))
([7ef5167](7ef5167))
* Fix various build issues on macOS
([3e71302](3e71302))
* Fix various build issues on Windows
([3e71302](3e71302))
* hls, set the DEFAULT explicitly to NO. Supports native HLS players.
([shaka-project#1170](https://github.com/joeyparrish/shaka-packager/issues/1170))
([1ab6818](1ab6818)),
closes
[shaka-project#1169](https://github.com/joeyparrish/shaka-packager/issues/1169)
* http_file: Close upload cache on task exit
([shaka-project#1348](https://github.com/joeyparrish/shaka-packager/issues/1348))
([6acdcc3](6acdcc3)),
closes
[shaka-project#1347](https://github.com/joeyparrish/shaka-packager/issues/1347)
* Indexing `bytes` produces `int` on python3 for `pssh-box.py`
([shaka-project#1228](https://github.com/joeyparrish/shaka-packager/issues/1228))
([d9d3c7f](d9d3c7f)),
closes
[shaka-project#1227](https://github.com/joeyparrish/shaka-packager/issues/1227)
* Low Latency DASH: include the "availabilityTimeComplete=false"
attribute
([shaka-project#1198](https://github.com/joeyparrish/shaka-packager/issues/1198))
([d687ad1](d687ad1))
* misleading log output when HLS target duration updates (fixes
[shaka-project#969](https://github.com/joeyparrish/shaka-packager/issues/969))
([shaka-project#971](https://github.com/joeyparrish/shaka-packager/issues/971))
([f7b3986](f7b3986))
* **MP4:** Add compatible brand dby1 for Dolby content.
([shaka-project#1211](https://github.com/joeyparrish/shaka-packager/issues/1211))
([520926c](520926c))
* Parse one frame mpeg-ts video
([shaka-project#1015](https://github.com/joeyparrish/shaka-packager/issues/1015))
([b221aa9](b221aa9)),
closes
[shaka-project#1013](https://github.com/joeyparrish/shaka-packager/issues/1013)
* preserve case for stream descriptors
([shaka-project#1321](https://github.com/joeyparrish/shaka-packager/issues/1321))
([5d44368](5d44368))
* Prevent crash in GetEarliestTimestamp() if periods are empty
([shaka-project#1173](https://github.com/joeyparrish/shaka-packager/issues/1173))
([d6f28d4](d6f28d4)),
closes
[shaka-project#1172](https://github.com/joeyparrish/shaka-packager/issues/1172)
* PTS diverge DTS when DTS close to 2pow33 and PTS more than 0
([shaka-project#1050](https://github.com/joeyparrish/shaka-packager/issues/1050))
([ab8ab12](ab8ab12)),
closes
[shaka-project#1049](https://github.com/joeyparrish/shaka-packager/issues/1049)
* remove extra block assumptions in mbedtls integration
([shaka-project#1323](https://github.com/joeyparrish/shaka-packager/issues/1323))
([db59ad5](db59ad5)),
closes
[shaka-project#1316](https://github.com/joeyparrish/shaka-packager/issues/1316)
* Restore support for legacy FairPlay system ID
([shaka-project#1357](https://github.com/joeyparrish/shaka-packager/issues/1357))
([4d22e99](4d22e99))
* Roll back depot_tools, bypass vpython
([shaka-project#1045](https://github.com/joeyparrish/shaka-packager/issues/1045))
([3fd538a](3fd538a)),
closes
[shaka-project#1023](https://github.com/joeyparrish/shaka-packager/issues/1023)
* set array_completeness in HEVCDecoderConfigurationRecord correctly
([shaka-project#975](https://github.com/joeyparrish/shaka-packager/issues/975))
([270888a](270888a))
* TTML generator timestamp millisecond formatting
([shaka-project#1179](https://github.com/joeyparrish/shaka-packager/issues/1179))
([494769c](494769c)),
closes
[shaka-project#1180](https://github.com/joeyparrish/shaka-packager/issues/1180)
* Update golden files for ttml tests and failing hls unit tests.
([shaka-project#1226](https://github.com/joeyparrish/shaka-packager/issues/1226))
([ac47e52](ac47e52))
* Update to use official FairPlay UUID.
([shaka-project#1281](https://github.com/joeyparrish/shaka-packager/issues/1281))
([ac59b9e](ac59b9e))
* use a better estimate of frame rate for cases with very short first
sample durations
([shaka-project#838](https://github.com/joeyparrish/shaka-packager/issues/838))
([5644041](5644041))
* webvtt single cue do not fail on EOS
([shaka-project#1061](https://github.com/joeyparrish/shaka-packager/issues/1061))
([b9d477b](b9d477b)),
closes
[shaka-project#1018](https://github.com/joeyparrish/shaka-packager/issues/1018)

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
flag: seeking PR We are actively seeking PRs for this; we do not currently expect the core team will resolve this type: enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants