mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-10-31 04:26:37 +08:00 
			
		
		
		
	adpcmenc: Calculate the IMA_QT predictor without overflow
Previously, the value given to put_bits was 10 bits long for positive predictors, even though 9 bits were to be written. The extra bit could in some cases overwrite existing bits in the bitstream writer cache. This fixes a failed assert in put_bits.h, when running a version built with -DDEBUG. The fate test result gets slightly improved, thanks to getting rid of the overwritten bits in the bitstream writer cache. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
		 Michael Niedermayer
					Michael Niedermayer
				
			
				
					committed by
					
						 Martin Storsjö
						Martin Storsjö
					
				
			
			
				
	
			
			
			 Martin Storsjö
						Martin Storsjö
					
				
			
						parent
						
							f82c4fb27f
						
					
				
				
					commit
					aa264da5bf
				
			| @@ -570,7 +570,7 @@ static int adpcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, | |||||||
|         init_put_bits(&pb, dst, pkt_size * 8); |         init_put_bits(&pb, dst, pkt_size * 8); | ||||||
|  |  | ||||||
|         for (ch = 0; ch < avctx->channels; ch++) { |         for (ch = 0; ch < avctx->channels; ch++) { | ||||||
|             put_bits(&pb, 9, (c->status[ch].prev_sample + 0x10000) >> 7); |             put_bits(&pb, 9, (c->status[ch].prev_sample & 0xFFFF) >> 7); | ||||||
|             put_bits(&pb, 7,  c->status[ch].step_index); |             put_bits(&pb, 7,  c->status[ch].step_index); | ||||||
|             if (avctx->trellis > 0) { |             if (avctx->trellis > 0) { | ||||||
|                 uint8_t buf[64]; |                 uint8_t buf[64]; | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| 057d27978b35888776512e4e9669a63b *tests/data/fate/acodec-adpcm-ima_qt.aiff | 23cbae1182e150ebf28e0abfb9cba127 *tests/data/fate/acodec-adpcm-ima_qt.aiff | ||||||
| 281252 tests/data/fate/acodec-adpcm-ima_qt.aiff | 281252 tests/data/fate/acodec-adpcm-ima_qt.aiff | ||||||
| 169c40435c68d50112c9c61fc67e446d *tests/data/fate/acodec-adpcm-ima_qt.out.wav | b0fafd002c38fb70acaddfda1a31ed61 *tests/data/fate/acodec-adpcm-ima_qt.out.wav | ||||||
| stddev:  918.61 PSNR: 37.07 MAXDIFF:34029 bytes:  1058400/  1058560 | stddev:  904.76 PSNR: 37.20 MAXDIFF:34029 bytes:  1058400/  1058560 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user