mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
fraps: frame threading support.
Codec is too simple to gain much from it at lower resolutions, but should help at very high resolutions, particularly for v3 and v5 where a not too optimized pseudo-YUV to RGB is done in the codec. Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
This commit is contained in:
parent
0efdb942a6
commit
cd3ced1bb9
@ -36,6 +36,7 @@
|
|||||||
#include "huffman.h"
|
#include "huffman.h"
|
||||||
#include "bytestream.h"
|
#include "bytestream.h"
|
||||||
#include "dsputil.h"
|
#include "dsputil.h"
|
||||||
|
#include "thread.h"
|
||||||
|
|
||||||
#define FPS_TAG MKTAG('F', 'P', 'S', 'x')
|
#define FPS_TAG MKTAG('F', 'P', 'S', 'x')
|
||||||
|
|
||||||
@ -199,12 +200,12 @@ static int decode_frame(AVCodecContext *avctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (f->data[0])
|
if (f->data[0])
|
||||||
avctx->release_buffer(avctx, f);
|
ff_thread_release_buffer(avctx, f);
|
||||||
f->pict_type = AV_PICTURE_TYPE_I;
|
f->pict_type = AV_PICTURE_TYPE_I;
|
||||||
f->key_frame = 1;
|
f->key_frame = 1;
|
||||||
f->reference = 0;
|
f->reference = 0;
|
||||||
f->buffer_hints = FF_BUFFER_HINTS_VALID;
|
f->buffer_hints = FF_BUFFER_HINTS_VALID;
|
||||||
if (avctx->get_buffer(avctx, f)) {
|
if (ff_thread_get_buffer(avctx, f)) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
|
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -315,6 +316,6 @@ AVCodec ff_fraps_decoder = {
|
|||||||
.init = decode_init,
|
.init = decode_init,
|
||||||
.close = decode_end,
|
.close = decode_end,
|
||||||
.decode = decode_frame,
|
.decode = decode_frame,
|
||||||
.capabilities = CODEC_CAP_DR1,
|
.capabilities = CODEC_CAP_DR1 | CODEC_CAP_FRAME_THREADS,
|
||||||
.long_name = NULL_IF_CONFIG_SMALL("Fraps"),
|
.long_name = NULL_IF_CONFIG_SMALL("Fraps"),
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user