Initial commit
Start a new clean history from here.
This commit is contained in:
48
app/src/frames.c
Normal file
48
app/src/frames.c
Normal file
@@ -0,0 +1,48 @@
|
||||
#include "frames.h"
|
||||
|
||||
#include <SDL2/SDL_mutex.h>
|
||||
#include <libavutil/avutil.h>
|
||||
#include <libavformat/avformat.h>
|
||||
|
||||
int frames_init(struct frames *frames) {
|
||||
if (!(frames->decoding_frame = av_frame_alloc())) {
|
||||
goto error_0;
|
||||
}
|
||||
|
||||
if (!(frames->rendering_frame = av_frame_alloc())) {
|
||||
goto error_1;
|
||||
}
|
||||
|
||||
if (!(frames->mutex = SDL_CreateMutex())) {
|
||||
goto error_2;
|
||||
}
|
||||
|
||||
if (!(frames->rendering_frame_consumed_cond = SDL_CreateCond())) {
|
||||
goto error_3;
|
||||
}
|
||||
|
||||
frames->rendering_frame_consumed = SDL_TRUE;
|
||||
|
||||
return 0;
|
||||
|
||||
error_3:
|
||||
SDL_DestroyMutex(frames->mutex);
|
||||
error_2:
|
||||
av_frame_free(&frames->rendering_frame);
|
||||
error_1:
|
||||
av_frame_free(&frames->decoding_frame);
|
||||
error_0:
|
||||
return -1;
|
||||
}
|
||||
|
||||
void frames_destroy(struct frames *frames) {
|
||||
SDL_DestroyMutex(frames->mutex);
|
||||
av_frame_free(&frames->rendering_frame);
|
||||
av_frame_free(&frames->decoding_frame);
|
||||
}
|
||||
|
||||
void frames_swap(struct frames *frames) {
|
||||
AVFrame *tmp = frames->decoding_frame;
|
||||
frames->decoding_frame = frames->rendering_frame;
|
||||
frames->rendering_frame = tmp;
|
||||
}
|
||||
Reference in New Issue
Block a user