|
|
|
@ -269,19 +269,23 @@ int ffmpeg_resize(ncvisual* nc, int rows, int cols) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
auto ffmpeg_details_init(void) -> ncvisual_details* {
|
|
|
|
|
auto deets = new ncvisual_details{};
|
|
|
|
|
deets->stream_index = -1;
|
|
|
|
|
deets->sub_stream_index = -1;
|
|
|
|
|
if((deets->frame = av_frame_alloc()) == nullptr){
|
|
|
|
|
delete deets;
|
|
|
|
|
return nullptr;
|
|
|
|
|
auto deets = static_cast<ncvisual_details*>(malloc(sizeof(ncvisual_details)));
|
|
|
|
|
if(deets){
|
|
|
|
|
memset(deets, 0, sizeof(*deets));
|
|
|
|
|
deets->stream_index = -1;
|
|
|
|
|
deets->sub_stream_index = -1;
|
|
|
|
|
if((deets->frame = av_frame_alloc()) == nullptr){
|
|
|
|
|
free(deets);
|
|
|
|
|
return nullptr;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return deets;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
auto ffmpeg_create() -> ncvisual* {
|
|
|
|
|
ncvisual* nc = static_cast<ncvisual*>(malloc(sizeof(*nc)));
|
|
|
|
|
auto nc = static_cast<ncvisual*>(malloc(sizeof(ncvisual)));
|
|
|
|
|
if(nc){
|
|
|
|
|
memset(nc, 0, sizeof(*nc));
|
|
|
|
|
if((nc->details = ffmpeg_details_init()) == nullptr){
|
|
|
|
|
free(nc);
|
|
|
|
|
return nullptr;
|
|
|
|
@ -591,7 +595,7 @@ auto ffmpeg_details_destroy(ncvisual_details* deets) -> void {
|
|
|
|
|
av_packet_free(&deets->packet);
|
|
|
|
|
avformat_close_input(&deets->fmtctx);
|
|
|
|
|
avsubtitle_free(&deets->subtitle);
|
|
|
|
|
delete deets;
|
|
|
|
|
free(deets);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static const ncvisual_implementation ffmpeg_impl = {
|
|
|
|
|