Commit d01144b9 authored by Michael Niedermayer's avatar Michael Niedermayer

Duplicate rounding that MS does in one of their implementations of an avi demuxer.

Fixes issue740
Based on patch by Cory Fields theuni-nospam- >xbmc @org

Originally committed as revision 23999 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 79042a6e
......@@ -48,6 +48,7 @@ typedef struct AVIStream {
int prefix_count;
uint32_t pal[256];
int has_pal;
int block_align; ///< AVCodecContext.block_align copied here for easier access
} AVIStream;
typedef struct {
......@@ -92,6 +93,8 @@ static void print_tag(const char *str, unsigned int tag, int size)
static inline int get_duration(AVIStream *ast, int len){
if(ast->sample_size){
return len;
}else if (ast->block_align){
return (len + ast->block_align - 1)/ast->block_align;
}else
return 1;
}
......@@ -569,6 +572,7 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
break;
case AVMEDIA_TYPE_AUDIO:
ff_get_wav_header(pb, st->codec, size);
ast->block_align= st->codec->block_align;
if(ast->sample_size && st->codec->block_align && ast->sample_size != st->codec->block_align){
av_log(s, AV_LOG_WARNING, "sample size (%d) != block align (%d)\n", ast->sample_size, st->codec->block_align);
ast->sample_size= st->codec->block_align;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment