|
128 | 128 |
|
129 | 129 | DASH_DEFAULT_ROLE_NAMESPACE = 'urn:mpeg:dash:role:2011' |
130 | 130 |
|
| 131 | +SCTE_NAMESPACE = 'urn:scte:dash:scte214-extensions' |
| 132 | + |
131 | 133 | DASH_MEDIA_SEGMENT_URL_PATTERN_SMOOTH = "/QualityLevels($Bandwidth$)/Fragments(%s=$Time$)" |
132 | 134 | DASH_MEDIA_SEGMENT_URL_PATTERN_HIPPO = '%s/Bitrate($Bandwidth$)/Fragment($Time$)' |
133 | 135 |
|
|
141 | 143 | DOLBY_DIGITAL_AUDIO_CHANNEL_CONFIGURATION_SCHEME_ID_URI = 'tag:dolby.com,2014:dash:audio_channel_configuration:2011' |
142 | 144 | DOLBY_AC4_AUDIO_CHANNEL_CONFIGURATION_SCHEME_ID_URI = 'tag:dolby.com,2015:dash:audio_channel_configuration:2015' |
143 | 145 |
|
| 146 | +MPEG_DASH_MATRIX_COEFFICIENTS_SCHEME_ID_URI = 'urn:mpeg:mpegB:cicp:MatrixCoefficients' |
| 147 | +MPEG_DASH_COLOUR_PRIMARIES_SCHEME_ID_URI = 'urn:mpeg:mpegB:cicp:ColourPrimaries' |
| 148 | +MPEG_DASH_TRANSFER_CHARACTERISTICS_SCHEME_ID_URI = 'urn:mpeg:mpegB:cicp:TransferCharacteristics' |
| 149 | + |
144 | 150 | ISOFF_MAIN_PROFILE = 'urn:mpeg:dash:profile:isoff-main:2011' |
145 | 151 | ISOFF_LIVE_PROFILE = 'urn:mpeg:dash:profile:isoff-live:2011' |
146 | 152 | ISOFF_ON_DEMAND_PROFILE = 'urn:mpeg:dash:profile:isoff-on-demand:2011' |
@@ -485,15 +491,50 @@ def OutputDash(options, set_attributes, audio_sets, video_sets, subtitles_sets, |
485 | 491 | AddSegmentTemplate(options, adaptation_set, init_segment_url, media_segment_url_template_prefix, video_tracks[0], 'video') |
486 | 492 |
|
487 | 493 | for video_track in video_tracks: |
488 | | - representation = xml.SubElement(adaptation_set, |
489 | | - 'Representation', |
490 | | - id=video_track.representation_id, |
491 | | - codecs=video_track.codec, |
492 | | - width=str(video_track.width), |
493 | | - height=str(video_track.height), |
494 | | - scanType=video_track.scan_type, |
495 | | - frameRate=video_track.frame_rate_ratio, |
496 | | - bandwidth=str(video_track.bandwidth)) |
| 494 | + if hasattr(video_track, 'supplemental_codec') and hasattr(video_track, 'supplemental_profile'): |
| 495 | + #adding MatrixCoefficients |
| 496 | + if hasattr(video_track, 'matrix_coefficients'): |
| 497 | + xml.SubElement(adaptation_set, |
| 498 | + 'EssentialProperty', |
| 499 | + schemeIdUri=MPEG_DASH_MATRIX_COEFFICIENTS_SCHEME_ID_URI, |
| 500 | + value=video_track.matrix_coefficients) |
| 501 | + |
| 502 | + #adding ColourPrimaries |
| 503 | + if hasattr(video_track, 'colour_primaries'): |
| 504 | + xml.SubElement(adaptation_set, |
| 505 | + 'EssentialProperty', |
| 506 | + schemeIdUri=MPEG_DASH_COLOUR_PRIMARIES_SCHEME_ID_URI, |
| 507 | + value=video_track.colour_primaries) |
| 508 | + |
| 509 | + #adding TransferCharacteristics |
| 510 | + if hasattr(video_track, 'transfer_characteristics'): |
| 511 | + xml.SubElement(adaptation_set, |
| 512 | + 'EssentialProperty', |
| 513 | + schemeIdUri=MPEG_DASH_TRANSFER_CHARACTERISTICS_SCHEME_ID_URI, |
| 514 | + value=video_track.transfer_characteristics) |
| 515 | + |
| 516 | + representation = xml.SubElement(adaptation_set, |
| 517 | + 'Representation', |
| 518 | + id=video_track.representation_id, |
| 519 | + codecs=video_track.codec.split(',')[0], |
| 520 | + width=str(video_track.width), |
| 521 | + height=str(video_track.height), |
| 522 | + scanType=video_track.scan_type, |
| 523 | + frameRate=video_track.frame_rate_ratio, |
| 524 | + bandwidth=str(video_track.bandwidth)) |
| 525 | + xml.register_namespace('scte214', SCTE_NAMESPACE) |
| 526 | + representation.set('{'+SCTE_NAMESPACE+'}supplementalCodecs', video_track.supplemental_codec) |
| 527 | + representation.set('{'+SCTE_NAMESPACE+'}supplementalProfiles', video_track.supplemental_profile) |
| 528 | + else: |
| 529 | + representation = xml.SubElement(adaptation_set, |
| 530 | + 'Representation', |
| 531 | + id=video_track.representation_id, |
| 532 | + codecs=video_track.codec, |
| 533 | + width=str(video_track.width), |
| 534 | + height=str(video_track.height), |
| 535 | + scanType=video_track.scan_type, |
| 536 | + frameRate=video_track.frame_rate_ratio, |
| 537 | + bandwidth=str(video_track.bandwidth)) |
497 | 538 | if hasattr(video_track, 'max_playout_rate'): |
498 | 539 | representation.set('maxPlayoutRate', video_track.max_playout_rate) |
499 | 540 |
|
|
0 commit comments