mirror of
https://git.videolan.org/git/ffmpeg.git
synced 2024-08-20 16:25:04 +02:00
CODEC_CAP_SMALL_LAST_FRAME patch by Justin Ruggles jruggle earthlink net
Originally committed as revision 5512 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
a66d63a94e
commit
cef7cc7232
19
ffmpeg.c
19
ffmpeg.c
@ -1358,12 +1358,29 @@ static int output_packet(AVInputStream *ist, int ist_index,
|
||||
if (ost->encoding_needed) {
|
||||
for(;;) {
|
||||
AVPacket pkt;
|
||||
int fifo_bytes;
|
||||
av_init_packet(&pkt);
|
||||
pkt.stream_index= ost->index;
|
||||
|
||||
switch(ost->st->codec->codec_type) {
|
||||
case CODEC_TYPE_AUDIO:
|
||||
ret = avcodec_encode_audio(enc, bit_buffer, bit_buffer_size, NULL);
|
||||
fifo_bytes = fifo_size(&ost->fifo, NULL);
|
||||
ret = 0;
|
||||
/* encode any samples remaining in fifo */
|
||||
if(fifo_bytes > 0 && enc->codec->capabilities & CODEC_CAP_SMALL_LAST_FRAME) {
|
||||
int fs_tmp = enc->frame_size;
|
||||
enc->frame_size = fifo_bytes / (2 * enc->channels);
|
||||
if(fifo_read(&ost->fifo, (uint8_t *)samples, fifo_bytes,
|
||||
&ost->fifo.rptr) == 0) {
|
||||
ret = avcodec_encode_audio(enc, bit_buffer, bit_buffer_size, samples);
|
||||
}
|
||||
enc->frame_size = fs_tmp;
|
||||
if(ret <= 0) {
|
||||
ret = avcodec_encode_audio(enc, bit_buffer, bit_buffer_size, NULL);
|
||||
}
|
||||
} else {
|
||||
ret = avcodec_encode_audio(enc, bit_buffer, bit_buffer_size, NULL);
|
||||
}
|
||||
audio_size += ret;
|
||||
pkt.flags |= PKT_FLAG_KEY;
|
||||
break;
|
||||
|
@ -365,6 +365,11 @@ extern int motion_estimation_method;
|
||||
* if this is not set, the codec is guranteed to never be feeded with NULL data
|
||||
*/
|
||||
#define CODEC_CAP_DELAY 0x0020
|
||||
/**
|
||||
* Codec can be fed a final frame with a smaller size.
|
||||
* This can be used to prevent truncation of the last audio samples.
|
||||
*/
|
||||
#define CODEC_CAP_SMALL_LAST_FRAME 0x0040
|
||||
|
||||
//the following defines may change, don't expect compatibility if you use them
|
||||
#define MB_TYPE_INTRA4x4 0x0001
|
||||
|
Loading…
Reference in New Issue
Block a user