Commit 9c8f0768 authored by Nicolas George's avatar Nicolas George Committed by Benoit Fouet

Add a flag to avoid calling vorbis_analysis_wrote twice with an empty buffer.

Patch by Nicolas George: name surname normalesup org

Originally committed as revision 15620 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent ac809e81
...@@ -42,6 +42,7 @@ typedef struct OggVorbisContext { ...@@ -42,6 +42,7 @@ typedef struct OggVorbisContext {
vorbis_block vb ; vorbis_block vb ;
uint8_t buffer[BUFFER_SIZE]; uint8_t buffer[BUFFER_SIZE];
int buffer_index; int buffer_index;
int eof;
/* decoder */ /* decoder */
vorbis_comment vc ; vorbis_comment vc ;
...@@ -136,10 +137,13 @@ static int oggvorbis_encode_frame(AVCodecContext *avccontext, ...@@ -136,10 +137,13 @@ static int oggvorbis_encode_frame(AVCodecContext *avccontext,
int buf_size, void *data) int buf_size, void *data)
{ {
OggVorbisContext *context = avccontext->priv_data ; OggVorbisContext *context = avccontext->priv_data ;
float **buffer ;
ogg_packet op ; ogg_packet op ;
signed short *audio = data ; signed short *audio = data ;
int l, samples = data ? OGGVORBIS_FRAME_SIZE : 0; int l;
if(data) {
int samples = OGGVORBIS_FRAME_SIZE;
float **buffer ;
buffer = vorbis_analysis_buffer(&context->vd, samples) ; buffer = vorbis_analysis_buffer(&context->vd, samples) ;
...@@ -154,6 +158,11 @@ static int oggvorbis_encode_frame(AVCodecContext *avccontext, ...@@ -154,6 +158,11 @@ static int oggvorbis_encode_frame(AVCodecContext *avccontext,
} }
vorbis_analysis_wrote(&context->vd, samples) ; vorbis_analysis_wrote(&context->vd, samples) ;
} else {
if(!context->eof)
vorbis_analysis_wrote(&context->vd, 0) ;
context->eof = 1;
}
while(vorbis_analysis_blockout(&context->vd, &context->vb) == 1) { while(vorbis_analysis_blockout(&context->vd, &context->vb) == 1) {
vorbis_analysis(&context->vb, NULL); vorbis_analysis(&context->vb, NULL);
......
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