X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=libhb%2Fmuxmkv.c;h=f179cb7553cf38e3ea323c12333e7eb6ce1a0796;hb=033e32de9c380f54c7d1362a3979da205ebc3a29;hp=04f9ae595be94d1ef39d1902e840202b47487ba5;hpb=e2cd98f3e71232b518b7165705d25d965ab9d9f3;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/libhb/muxmkv.c b/libhb/muxmkv.c index 04f9ae59..f179cb75 100644 --- a/libhb/muxmkv.c +++ b/libhb/muxmkv.c @@ -40,8 +40,8 @@ static int yuv2rgb(int yuv) int r, g, b; y = (yuv >> 16) & 0xff; - Cr = (yuv >> 8) & 0xff; - Cb = (yuv) & 0xff; + Cb = (yuv >> 8) & 0xff; + Cr = (yuv ) & 0xff; r = 1.164 * (y - 16) + 2.018 * (Cb - 128); g = 1.164 * (y - 16) - 0.813 * (Cr - 128) - 0.391 * (Cb - 128); @@ -124,7 +124,6 @@ static int MKVInit( hb_mux_object_t * m ) if (job->areBframes) track->minCache = 1; break; - case HB_VCODEC_XVID: case HB_VCODEC_FFMPEG: track->codecID = MK_VCODEC_MP4ASP; track->codecPrivate = job->config.mpeg4.bytes; @@ -226,6 +225,7 @@ static int MKVInit( hb_mux_object_t * m ) } break; case HB_ACODEC_FAAC: + case HB_ACODEC_CA_AAC: track->codecPrivate = audio->priv.config.aac.bytes; track->codecPrivateSize = audio->priv.config.aac.length; track->codecID = MK_ACODEC_AAC; @@ -287,7 +287,7 @@ static int MKVInit( hb_mux_object_t * m ) int len; subtitle = hb_list_item( title->list_subtitle, i ); - if (subtitle->dest != PASSTHRUSUB) + if (subtitle->config.dest != PASSTHRUSUB) continue; memset(track, 0, sizeof(mk_TrackConfig)); @@ -313,6 +313,10 @@ static int MKVInit( hb_mux_object_t * m ) default: continue; } + if ( subtitle->config.default_track ) + { + track->flagDefault = 1; + } mux_data = calloc(1, sizeof( hb_mux_data_t ) ); subtitle->mux_data = mux_data; @@ -400,24 +404,24 @@ static int MKVMux( hb_mux_object_t * m, hb_mux_data_t * mux_data, } else if ( mux_data->subtitle ) { + uint64_t duration; timecode = buf->start * TIMECODE_SCALE; if( mk_startFrame(m->file, mux_data->track) < 0) { hb_error( "Failed to write frame to output file, Disk Full?" ); *job->die = 1; } + + duration = buf->stop * TIMECODE_SCALE - timecode; if( mux_data->sub_format == TEXTSUB ) { - uint64_t duration; - - duration = buf->stop * TIMECODE_SCALE - timecode; mk_addFrameData(m->file, mux_data->track, buf->data, buf->size); mk_setFrameFlags(m->file, mux_data->track, timecode, 1, duration); } else { mk_addFrameData(m->file, mux_data->track, buf->data, buf->size); - mk_setFrameFlags(m->file, mux_data->track, timecode, 1, 0); + mk_setFrameFlags(m->file, mux_data->track, timecode, 1, duration); } mk_flushFrame(m->file, mux_data->track); return 0;