@@ -130,7 +130,7 @@ static void add_subtitle(int track, hb_list_t *list_subtitle, BLURAY_STREAM_INFO
130
130
return ;
131
131
}
132
132
133
- static void add_audio (int track , hb_list_t * list_audio , BLURAY_STREAM_INFO * bdaudio , int substream_type , uint32_t codec , uint32_t codec_param )
133
+ static void add_audio (int track , hb_list_t * list_audio , BLURAY_STREAM_INFO * bdaudio , int substream_type , uint32_t codec , uint32_t codec_param , int attributes )
134
134
{
135
135
const char * codec_name ;
136
136
hb_audio_t * audio ;
@@ -195,7 +195,7 @@ static void add_audio(int track, hb_list_t *list_audio, BLURAY_STREAM_INFO *bdau
195
195
196
196
lang = lang_for_code2 ( (char * )bdaudio -> lang );
197
197
198
- audio -> config .lang .attributes = HB_AUDIO_ATTR_NONE ;
198
+ audio -> config .lang .attributes = attributes ;
199
199
200
200
snprintf ( audio -> config .lang .simple ,
201
201
sizeof ( audio -> config .lang .simple ), "%s" ,
@@ -474,47 +474,146 @@ hb_title_t * hb_bd_title_scan( hb_bd_t * d, int tt, uint64_t min_duration )
474
474
case BLURAY_STREAM_TYPE_AUDIO_TRUHD :
475
475
// Add 2 audio tracks. One for TrueHD and one for AC-3
476
476
add_audio (ii , title -> list_audio , bdaudio , HB_SUBSTREAM_BD_AC3 ,
477
- HB_ACODEC_AC3 , AV_CODEC_ID_AC3 );
477
+ HB_ACODEC_AC3 , AV_CODEC_ID_AC3 , HB_AUDIO_ATTR_NONE );
478
478
add_audio (ii , title -> list_audio , bdaudio , HB_SUBSTREAM_BD_TRUEHD ,
479
- HB_ACODEC_FFTRUEHD , AV_CODEC_ID_TRUEHD );
479
+ HB_ACODEC_FFTRUEHD , AV_CODEC_ID_TRUEHD ,
480
+ HB_AUDIO_ATTR_NONE );
480
481
break ;
481
482
482
483
case BLURAY_STREAM_TYPE_AUDIO_DTS :
483
484
add_audio (ii , title -> list_audio , bdaudio , 0 ,
484
- HB_ACODEC_DCA , AV_CODEC_ID_DTS );
485
+ HB_ACODEC_DCA , AV_CODEC_ID_DTS , HB_AUDIO_ATTR_NONE );
485
486
break ;
486
487
487
488
case BLURAY_STREAM_TYPE_AUDIO_MPEG2 :
488
489
case BLURAY_STREAM_TYPE_AUDIO_MPEG1 :
489
490
add_audio (ii , title -> list_audio , bdaudio , 0 ,
490
- HB_ACODEC_FFMPEG , AV_CODEC_ID_MP2 );
491
+ HB_ACODEC_FFMPEG , AV_CODEC_ID_MP2 ,
492
+ HB_AUDIO_ATTR_NONE );
491
493
break ;
492
494
493
495
case BLURAY_STREAM_TYPE_AUDIO_AC3PLUS :
494
496
add_audio (ii , title -> list_audio , bdaudio , 0 ,
495
- HB_ACODEC_FFEAC3 , AV_CODEC_ID_EAC3 );
497
+ HB_ACODEC_FFEAC3 , AV_CODEC_ID_EAC3 ,
498
+ HB_AUDIO_ATTR_NONE );
499
+ break ;
500
+
501
+ case BLURAY_STREAM_TYPE_AUDIO_AC3PLUS_SECONDARY :
502
+ add_audio (ii , title -> list_audio , bdaudio , 0 ,
503
+ HB_ACODEC_FFEAC3 , AV_CODEC_ID_EAC3 ,
504
+ HB_AUDIO_ATTR_NONE );
496
505
break ;
497
506
498
507
case BLURAY_STREAM_TYPE_AUDIO_LPCM :
499
508
add_audio (ii , title -> list_audio , bdaudio , 0 ,
500
- HB_ACODEC_FFMPEG , AV_CODEC_ID_PCM_BLURAY );
509
+ HB_ACODEC_FFMPEG , AV_CODEC_ID_PCM_BLURAY ,
510
+ HB_AUDIO_ATTR_NONE );
501
511
break ;
502
512
503
513
case BLURAY_STREAM_TYPE_AUDIO_AC3 :
504
514
add_audio (ii , title -> list_audio , bdaudio , 0 ,
505
- HB_ACODEC_AC3 , AV_CODEC_ID_AC3 );
515
+ HB_ACODEC_AC3 , AV_CODEC_ID_AC3 , HB_AUDIO_ATTR_NONE );
506
516
break ;
507
517
508
518
case BLURAY_STREAM_TYPE_AUDIO_DTSHD_MASTER :
509
519
case BLURAY_STREAM_TYPE_AUDIO_DTSHD :
510
520
// Add 2 audio tracks. One for DTS-HD and one for DTS
511
521
add_audio (ii , title -> list_audio , bdaudio , HB_SUBSTREAM_BD_DTS ,
512
- HB_ACODEC_DCA , AV_CODEC_ID_DTS );
522
+ HB_ACODEC_DCA , AV_CODEC_ID_DTS , HB_AUDIO_ATTR_NONE );
513
523
// DTS-HD is special. The substreams must be concatinated
514
524
// DTS-core followed by DTS-hd-extensions. Setting
515
525
// a substream id of 0 says use all substreams.
516
526
add_audio (ii , title -> list_audio , bdaudio , 0 ,
517
- HB_ACODEC_DCA_HD , AV_CODEC_ID_DTS );
527
+ HB_ACODEC_DCA_HD , AV_CODEC_ID_DTS ,
528
+ HB_AUDIO_ATTR_NONE );
529
+ break ;
530
+
531
+ case BLURAY_STREAM_TYPE_AUDIO_DTSHD_SECONDARY :
532
+ // BD "DTSHD_SECONDARY" is DTS Express which has no
533
+ // DTS core
534
+ add_audio (ii , title -> list_audio , bdaudio , 0 ,
535
+ HB_ACODEC_DCA_HD , AV_CODEC_ID_DTS ,
536
+ HB_AUDIO_ATTR_NONE );
537
+ break ;
538
+
539
+ default :
540
+ hb_log ("scan: unknown audio pid 0x%x codec 0x%x" , bdaudio -> pid ,
541
+ bdaudio -> coding_type );
542
+ break ;
543
+ }
544
+ }
545
+
546
+ // Add all the secondary audios found in the above clip.
547
+ for (jj = 0 ; jj < ti -> clips [audio_clip_index ].sec_audio_stream_count ; jj ++ , ii ++ )
548
+ {
549
+ BLURAY_STREAM_INFO * bdaudio ;
550
+
551
+ bdaudio = & ti -> clips [audio_clip_index ].sec_audio_streams [jj ];
552
+
553
+ switch (bdaudio -> coding_type )
554
+ {
555
+ case BLURAY_STREAM_TYPE_AUDIO_TRUHD :
556
+ // Add 2 audio tracks. One for TrueHD and one for AC-3
557
+ add_audio (ii , title -> list_audio , bdaudio , HB_SUBSTREAM_BD_AC3 ,
558
+ HB_ACODEC_AC3 , AV_CODEC_ID_AC3 ,
559
+ HB_AUDIO_ATTR_SECONDARY );
560
+ add_audio (ii , title -> list_audio , bdaudio , HB_SUBSTREAM_BD_TRUEHD ,
561
+ HB_ACODEC_FFTRUEHD , AV_CODEC_ID_TRUEHD ,
562
+ HB_AUDIO_ATTR_SECONDARY );
563
+ break ;
564
+
565
+ case BLURAY_STREAM_TYPE_AUDIO_DTS :
566
+ add_audio (ii , title -> list_audio , bdaudio , 0 ,
567
+ HB_ACODEC_DCA , AV_CODEC_ID_DTS ,
568
+ HB_AUDIO_ATTR_SECONDARY );
569
+ break ;
570
+
571
+ case BLURAY_STREAM_TYPE_AUDIO_MPEG2 :
572
+ case BLURAY_STREAM_TYPE_AUDIO_MPEG1 :
573
+ add_audio (ii , title -> list_audio , bdaudio , 0 ,
574
+ HB_ACODEC_FFMPEG , AV_CODEC_ID_MP2 ,
575
+ HB_AUDIO_ATTR_SECONDARY );
576
+ break ;
577
+
578
+ case BLURAY_STREAM_TYPE_AUDIO_AC3PLUS :
579
+ case BLURAY_STREAM_TYPE_AUDIO_AC3PLUS_SECONDARY :
580
+ add_audio (ii , title -> list_audio , bdaudio , 0 ,
581
+ HB_ACODEC_FFEAC3 , AV_CODEC_ID_EAC3 ,
582
+ HB_AUDIO_ATTR_SECONDARY );
583
+ break ;
584
+
585
+ case BLURAY_STREAM_TYPE_AUDIO_LPCM :
586
+ add_audio (ii , title -> list_audio , bdaudio , 0 ,
587
+ HB_ACODEC_FFMPEG , AV_CODEC_ID_PCM_BLURAY ,
588
+ HB_AUDIO_ATTR_SECONDARY );
589
+ break ;
590
+
591
+ case BLURAY_STREAM_TYPE_AUDIO_AC3 :
592
+ add_audio (ii , title -> list_audio , bdaudio , 0 ,
593
+ HB_ACODEC_AC3 , AV_CODEC_ID_AC3 ,
594
+ HB_AUDIO_ATTR_SECONDARY );
595
+ break ;
596
+
597
+ case BLURAY_STREAM_TYPE_AUDIO_DTSHD_MASTER :
598
+ case BLURAY_STREAM_TYPE_AUDIO_DTSHD :
599
+ // Add 2 audio tracks. One for DTS-HD and one for DTS
600
+ add_audio (ii , title -> list_audio , bdaudio , HB_SUBSTREAM_BD_DTS ,
601
+ HB_ACODEC_DCA , AV_CODEC_ID_DTS ,
602
+ HB_AUDIO_ATTR_SECONDARY );
603
+ // DTS-HD is special. The substreams must be concatinated
604
+ // DTS-core followed by DTS-hd-extensions. Setting
605
+ // a substream id of 0 says use all substreams.
606
+ add_audio (ii , title -> list_audio , bdaudio , 0 ,
607
+ HB_ACODEC_DCA_HD , AV_CODEC_ID_DTS ,
608
+ HB_AUDIO_ATTR_SECONDARY );
609
+ break ;
610
+
611
+ case BLURAY_STREAM_TYPE_AUDIO_DTSHD_SECONDARY :
612
+ // BD "DTSHD_SECONDARY" is DTS Express which has no
613
+ // DTS core
614
+ add_audio (ii , title -> list_audio , bdaudio , 0 ,
615
+ HB_ACODEC_DCA_HD , AV_CODEC_ID_DTS ,
616
+ HB_AUDIO_ATTR_SECONDARY );
518
617
break ;
519
618
520
619
default :
0 commit comments