Skip to content
New issue

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

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

Already on GitHub? # 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>
# for free to join this conversation on GitHub. Already have an account? # 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