move ff_get_v_length and ff_put_v from nutenc.c to internal.h/aviobuf.c

patch by Micheal Chinen < mchinen gmail >

Originally committed as revision 24140 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Chinen 2010-07-09 12:14:33 +00:00 committed by Janne Grunau
parent f8280ff4c0
commit 603e5c0b71
3 changed files with 29 additions and 21 deletions

View File

@ -23,6 +23,7 @@
#include "libavutil/intreadwrite.h"
#include "avformat.h"
#include "avio.h"
#include "internal.h"
#include <stdarg.h>
#define IO_BUFFER_SIZE 32768
@ -248,6 +249,24 @@ void put_strz(ByteIOContext *s, const char *str)
put_byte(s, 0);
}
int ff_get_v_length(uint64_t val){
int i=1;
while(val>>=7)
i++;
return i;
}
void ff_put_v(ByteIOContext *bc, uint64_t val){
int i= ff_get_v_length(val);
while(--i>0)
put_byte(bc, 128 | (val>>(7*i)));
put_byte(bc, val&127);
}
void put_le64(ByteIOContext *s, uint64_t val)
{
put_le32(s, (uint32_t)(val & 0xffffffff));

View File

@ -157,4 +157,14 @@ void ff_sdp_write_media(char *buff, int size, AVCodecContext *c,
int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt,
AVFormatContext *src);
/**
* Get the length in bytes which is needed to store val as v.
*/
int ff_get_v_length(uint64_t val);
/**
* Put val using a variable number of bytes.
*/
void ff_put_v(ByteIOContext *bc, uint64_t val);
#endif /* AVFORMAT_INTERNAL_H */

View File

@ -241,27 +241,6 @@ static void build_frame_code(AVFormatContext *s){
nut->frame_code['N'].flags= FLAG_INVALID;
}
/**
* Get the length in bytes which is needed to store val as v.
*/
static int ff_get_v_length(uint64_t val){
int i=1;
while(val>>=7)
i++;
return i;
}
static void ff_put_v(ByteIOContext *bc, uint64_t val){
int i= ff_get_v_length(val);
while(--i>0)
put_byte(bc, 128 | (val>>(7*i)));
put_byte(bc, val&127);
}
static void put_tt(NUTContext *nut, StreamContext *nus, ByteIOContext *bc, uint64_t val){
val *= nut->time_base_count;
val += nus->time_base - nut->time_base;