comparison libmpdemux/demux_mkv.cpp @ 11482:a6b69309a791

Support for FLAC in Matroska written in the MS compatibility mode.
author mosu
date Sun, 16 Nov 2003 19:24:43 +0000
parents 27e5c86c968a
children 3abf5b7cb308
comparison
equal deleted inserted replaced
11481:64298443e494 11482:a6b69309a791
2353 ((short *)(sh_a->wf + 1))[4] = codecdata_length; 2353 ((short *)(sh_a->wf + 1))[4] = codecdata_length;
2354 memcpy(((char *)(sh_a->wf + 1)) + 10, src, codecdata_length); 2354 memcpy(((char *)(sh_a->wf + 1)) + 10, src, codecdata_length);
2355 2355
2356 track->realmedia = true; 2356 track->realmedia = true;
2357 2357
2358 } else if (!strcmp(track->codec_id, MKV_A_FLAC)) { 2358 } else if (!strcmp(track->codec_id, MKV_A_FLAC) ||
2359 (track->a_formattag == 0xf1ac)) {
2359 free(sh_a->wf); 2360 free(sh_a->wf);
2360 sh_a->wf = NULL; 2361 sh_a->wf = NULL;
2361 2362
2362 dp = new_demux_packet(4); 2363 dp = new_demux_packet(4);
2363 memcpy(dp->buffer, "fLaC", 4); 2364 memcpy(dp->buffer, "fLaC", 4);
2364 dp->pts = 0; 2365 dp->pts = 0;
2365 dp->flags = 0; 2366 dp->flags = 0;
2366 ds_add_packet(demuxer->audio, dp); 2367 ds_add_packet(demuxer->audio, dp);
2367 dp = new_demux_packet(track->private_size); 2368 if (track->a_formattag == mmioFOURCC('f', 'L', 'a', 'C')) {
2368 memcpy(dp->buffer, track->private_data, track->private_size); 2369 dp = new_demux_packet(track->private_size);
2370 memcpy(dp->buffer, track->private_data, track->private_size);
2371 } else {
2372 sh_a->format = mmioFOURCC('f', 'L', 'a', 'C');
2373 dp = new_demux_packet(track->private_size - sizeof(WAVEFORMATEX));
2374 memcpy(dp->buffer, (unsigned char *)track->private_data +
2375 sizeof(WAVEFORMATEX), track->private_size -
2376 sizeof(WAVEFORMATEX));
2377 }
2369 dp->pts = 0; 2378 dp->pts = 0;
2370 dp->flags = 0; 2379 dp->flags = 0;
2371 ds_add_packet(demuxer->audio, dp); 2380 ds_add_packet(demuxer->audio, dp);
2372 } 2381 }
2373 2382