|
|
|
@@ -35,8 +35,8 @@ |
|
|
|
#define BUFFER_SIZE (2*MAX_THREADS) |
|
|
|
|
|
|
|
typedef struct{ |
|
|
|
void *indata; |
|
|
|
void *outdata; |
|
|
|
AVFrame *indata; |
|
|
|
AVPacket *outdata; |
|
|
|
int64_t return_code; |
|
|
|
unsigned index; |
|
|
|
} Task; |
|
|
|
@@ -255,19 +255,12 @@ void ff_frame_thread_encoder_free(AVCodecContext *avctx){ |
|
|
|
|
|
|
|
while (av_fifo_size(c->task_fifo) > 0) { |
|
|
|
Task task; |
|
|
|
AVFrame *frame; |
|
|
|
av_fifo_generic_read(c->task_fifo, &task, sizeof(task), NULL); |
|
|
|
frame = task.indata; |
|
|
|
av_frame_free(&frame); |
|
|
|
task.indata = NULL; |
|
|
|
av_frame_free(&task.indata); |
|
|
|
} |
|
|
|
|
|
|
|
for (i=0; i<BUFFER_SIZE; i++) { |
|
|
|
if (c->finished_tasks[i].outdata != NULL) { |
|
|
|
AVPacket *pkt = c->finished_tasks[i].outdata; |
|
|
|
av_packet_free(&pkt); |
|
|
|
c->finished_tasks[i].outdata = NULL; |
|
|
|
} |
|
|
|
av_packet_free(&c->finished_tasks[i].outdata); |
|
|
|
} |
|
|
|
|
|
|
|
pthread_mutex_destroy(&c->task_fifo_mutex); |
|
|
|
|