avcodec/rangecoder: Move ff_rac_check_termination to tests/rangecoder.c
It is only used there. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
		
							parent
							
								
									f729dee615
								
							
						
					
					
						commit
						bce9c5e276
					
				@ -121,22 +121,3 @@ int ff_rac_terminate(RangeCoder *c, int version)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    return c->bytestream - c->bytestream_start;
 | 
					    return c->bytestream - c->bytestream_start;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
int ff_rac_check_termination(RangeCoder *c, int version)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (version == 1) {
 | 
					 | 
				
			||||||
        RangeCoder tmp = *c;
 | 
					 | 
				
			||||||
        get_rac(c, (uint8_t[]) { 129 });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (c->bytestream == tmp.bytestream && c->bytestream > c->bytestream_start)
 | 
					 | 
				
			||||||
            tmp.low -= *--tmp.bytestream;
 | 
					 | 
				
			||||||
        tmp.bytestream_end = tmp.bytestream;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (get_rac(&tmp, (uint8_t[]) { 129 }))
 | 
					 | 
				
			||||||
            return AVERROR_INVALIDDATA;
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        if (c->bytestream_end != c->bytestream)
 | 
					 | 
				
			||||||
            return AVERROR_INVALIDDATA;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -57,15 +57,6 @@ void ff_init_range_decoder(RangeCoder *c, const uint8_t *buf, int buf_size);
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
int ff_rac_terminate(RangeCoder *c, int version);
 | 
					int ff_rac_terminate(RangeCoder *c, int version);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Check if at the current position there is a valid looking termination
 | 
					 | 
				
			||||||
 * @param version version 0 requires the decoder to know the data size in bytes
 | 
					 | 
				
			||||||
 *                version 1 needs about 1 bit more space but does not need to
 | 
					 | 
				
			||||||
 *                          carry the size from encoder to decoder
 | 
					 | 
				
			||||||
 * @returns negative AVERROR code on error or non negative.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
int ff_rac_check_termination(RangeCoder *c, int version);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void ff_build_rac_states(RangeCoder *c, int factor, int max_p);
 | 
					void ff_build_rac_states(RangeCoder *c, int factor, int max_p);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline void renorm_encoder(RangeCoder *c)
 | 
					static inline void renorm_encoder(RangeCoder *c)
 | 
				
			||||||
 | 
				
			|||||||
@ -26,6 +26,32 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#define SIZE 1240
 | 
					#define SIZE 1240
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Check if at the current position there is a valid looking termination
 | 
				
			||||||
 | 
					 * @param version version 0 requires the decoder to know the data size in bytes
 | 
				
			||||||
 | 
					 *                version 1 needs about 1 bit more space but does not need to
 | 
				
			||||||
 | 
					 *                          carry the size from encoder to decoder
 | 
				
			||||||
 | 
					 * @returns negative AVERROR code on error or non negative.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					static int rac_check_termination(RangeCoder *c, int version)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (version == 1) {
 | 
				
			||||||
 | 
					        RangeCoder tmp = *c;
 | 
				
			||||||
 | 
					        get_rac(c, (uint8_t[]) { 129 });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (c->bytestream == tmp.bytestream && c->bytestream > c->bytestream_start)
 | 
				
			||||||
 | 
					            tmp.low -= *--tmp.bytestream;
 | 
				
			||||||
 | 
					        tmp.bytestream_end = tmp.bytestream;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (get_rac(&tmp, (uint8_t[]) { 129 }))
 | 
				
			||||||
 | 
					            return AVERROR_INVALIDDATA;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        if (c->bytestream_end != c->bytestream)
 | 
				
			||||||
 | 
					            return AVERROR_INVALIDDATA;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main(void)
 | 
					int main(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    RangeCoder c;
 | 
					    RangeCoder c;
 | 
				
			||||||
@ -61,7 +87,7 @@ int main(void)
 | 
				
			|||||||
                    return 1;
 | 
					                    return 1;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (ff_rac_check_termination(&c, version) < 0) {
 | 
					            if (rac_check_termination(&c, version) < 0) {
 | 
				
			||||||
                av_log(NULL, AV_LOG_ERROR, "rac failure at termination pass %d version %d\n", p, version);
 | 
					                av_log(NULL, AV_LOG_ERROR, "rac failure at termination pass %d version %d\n", p, version);
 | 
				
			||||||
                return 1;
 | 
					                return 1;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user