Mercurial > libavformat.hg
changeset 660:758929a1744c libavformat
chunk support in mov patch by Roine Gustafsson <roine AT users DOT sourceforge DOT net>
author | mmu_man |
---|---|
date | Thu, 27 Jan 2005 15:39:13 +0000 |
parents | 6d7c0e6d929e |
children | ff3b403d0498 |
files | mov.c |
diffstat | 1 files changed, 8 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/mov.c Thu Jan 27 14:48:15 2005 +0000 +++ b/mov.c Thu Jan 27 15:39:13 2005 +0000 @@ -1746,11 +1746,10 @@ #ifdef DEBUG fprintf(stderr, "sc[ffid %d]->sample_size = %d\n", sc->ffindex, sc->sample_size); #endif - //size = sc->sample_sizes[sc->current_sample]; - // that ain't working... - //size = (sc->sample_size)?sc->sample_size:sc->sample_sizes[sc->current_sample]; - size = (sc->sample_size > 1)?sc->sample_size:sc->sample_sizes[sc->current_sample]; - + // sample_size is not always correct for audio. Quicktime ignores this value and + // computes it differently. + if(s->streams[sc->ffindex]->codec.codec_type == CODEC_TYPE_VIDEO) + size = sc->sample_size?sc->sample_size:sc->sample_sizes[sc->current_sample]; sc->current_sample++; sc->left_in_chunk--; @@ -1810,7 +1809,7 @@ if (sc->sample_size > 0) { int foundsize=0; for(i=0; i<(sc->sample_to_chunk_sz); i++) { - if( (sc->sample_to_chunk[i].first)<=(sc->next_chunk) && (sc->sample_size>0) ) + if( (sc->sample_to_chunk[i].first)<=(sc->next_chunk) ) { // I can't figure out why for PCM audio sample_size is always 1 // (it should actually be channels*bits_per_second/8) but it is. @@ -1836,7 +1835,8 @@ #ifdef MOV_SPLIT_CHUNKS /* split chunks into samples */ - if (sc->sample_size == 0) { + if (s->streams[sc->ffindex]->codec.codec_type == CODEC_TYPE_VIDEO) { + // This does not support split audio, as the sample_size is often not correct idx = sc->sample_to_chunk_index; if ((idx + 1 < sc->sample_to_chunk_sz) && (sc->next_chunk >= sc->sample_to_chunk[idx + 1].first)) @@ -1846,7 +1846,7 @@ mov->partial = sc; /* we'll have to get those samples before next chunk */ sc->left_in_chunk = sc->sample_to_chunk[idx].count - 1; - size = (sc->sample_size > 1)?sc->sample_size:sc->sample_sizes[sc->current_sample]; + size = sc->sample_size?sc->sample_size:sc->sample_sizes[sc->current_sample]; } sc->current_sample++;