diff options
author | John Stebbins <[email protected]> | 2019-07-15 09:32:29 -0700 |
---|---|---|
committer | John Stebbins <[email protected]> | 2019-07-15 09:32:29 -0700 |
commit | 3f9531974c9a8d6c0f43a5ee536c419ac407401b (patch) | |
tree | 99dd820772f30a2af60fd0af1d05dd5ea433fe6d | |
parent | f99a5981027c1393638ea6b547cf3258ec5dfcda (diff) |
Fix dropped audio when embedded CC sub is selected
The subtitle ID assigned to CC embedded in video collided with regular
track IDs in some file types.
Fixes https://github.com/HandBrake/HandBrake/issues/2103
-rw-r--r-- | libhb/common.c | 3 | ||||
-rw-r--r-- | libhb/common.h | 3 | ||||
-rw-r--r-- | libhb/decavcodec.c | 5 | ||||
-rw-r--r-- | libhb/stream.c | 4 |
4 files changed, 10 insertions, 5 deletions
diff --git a/libhb/common.c b/libhb/common.c index 747b911fd..63f34971f 100644 --- a/libhb/common.c +++ b/libhb/common.c @@ -4919,7 +4919,8 @@ int hb_import_subtitle_add( const hb_job_t * job, return 0; } - subtitle->id = (hb_list_count(job->list_subtitle) << 8) | 0xFF; + subtitle->id = (hb_list_count(job->list_subtitle) << 8) | + HB_SUBTITLE_IMPORT_TAG; subtitle->format = TEXTSUB; subtitle->source = source; subtitle->codec = source == IMPORTSRT ? WORK_DECSRTSUB : WORK_DECSSASUB; diff --git a/libhb/common.h b/libhb/common.h index 5b77cbed4..69b285467 100644 --- a/libhb/common.h +++ b/libhb/common.h @@ -950,6 +950,9 @@ struct hb_chapter_s #define HB_SUBTITLE_ATTR_PANSCAN 0x0200 #define HB_SUBTITLE_ATTR_DEFAULT 0x0400 +#define HB_SUBTITLE_IMPORT_TAG 0xFF000000 +#define HB_SUBTITLE_EMBEDDED_CC_TAG 0xFE000000 + struct hb_subtitle_s { int id; diff --git a/libhb/decavcodec.c b/libhb/decavcodec.c index 0b851e842..5771a9b1e 100644 --- a/libhb/decavcodec.c +++ b/libhb/decavcodec.c @@ -1069,7 +1069,7 @@ static hb_buffer_t *copy_frame( hb_work_private_t *pv ) subtitle = calloc(sizeof( hb_subtitle_t ), 1); subtitle->track = hb_list_count(pv->title->list_subtitle); - subtitle->id = 0; + subtitle->id = HB_SUBTITLE_EMBEDDED_CC_TAG; subtitle->format = TEXTSUB; subtitle->source = CC608SUB; subtitle->config.dest = PASSTHRUSUB; @@ -1529,7 +1529,8 @@ static int decavcodecvInit( hb_work_object_t * w, hb_job_t * job ) while ((subtitle = hb_list_item(job->list_subtitle, i++)) != NULL) { - if (subtitle->source == CC608SUB) + if (subtitle->source == CC608SUB && + subtitle->id == HB_SUBTITLE_EMBEDDED_CC_TAG) { if (pv->list_subtitle == NULL) { diff --git a/libhb/stream.c b/libhb/stream.c index ca8739190..1fa701827 100644 --- a/libhb/stream.c +++ b/libhb/stream.c @@ -968,8 +968,8 @@ hb_stream_t * hb_bd_stream_open( hb_handle_t *h, hb_title_t *title ) { // If the subtitle track is CC embedded in the video stream, then // it does not have an independent pid. In this case, we assigned - // the subtitle->id to 0. - if (subtitle->id != 0) + // the subtitle->id to HB_SUBTITLE_EMBEDDED_CC_TAG. + if (subtitle->id != HB_SUBTITLE_EMBEDDED_CC_TAG) { pid = subtitle->id & 0xFFFF; stream_type = subtitle->stream_type; |