Subtitle extractions core is here, need to use dynamic size array and implement general metadata detection.

This commit is contained in:
Zoe Roux 2019-09-13 04:04:35 +02:00
parent 7620430733
commit ea5af3c318

View File

@ -16,8 +16,6 @@ constexpr enum AVRounding operator |(const enum AVRounding a, const enum AVRound
return (enum AVRounding)(uint32_t(a) | uint32_t(b)); return (enum AVRounding)(uint32_t(a) | uint32_t(b));
} }
int Init() int Init()
{ {
return 42; return 42;
@ -42,7 +40,7 @@ void ExtractSubtitles(const char* path, const char* outPath)
av_dump_format(inputContext, 0, path, false); av_dump_format(inputContext, 0, path, false);
const unsigned int outputCount = inputContext->nb_streams; const unsigned int outputCount = inputContext->nb_streams;
AVFormatContext** outputList = new AVFormatContext*[outputCount](); AVFormatContext* outputList[5];// = new AVFormatContext * [outputCount];
//Initialize output and set headers. //Initialize output and set headers.
for (unsigned int i = 0; i < inputContext->nb_streams; i++) for (unsigned int i = 0; i < inputContext->nb_streams; i++)
@ -51,7 +49,7 @@ void ExtractSubtitles(const char* path, const char* outPath)
const AVCodecParameters* inputCodecpar = inputStream->codecpar; const AVCodecParameters* inputCodecpar = inputStream->codecpar;
if (inputCodecpar->codec_type != AVMEDIA_TYPE_SUBTITLE) if (inputCodecpar->codec_type != AVMEDIA_TYPE_SUBTITLE)
outputList[i] = nullptr; outputList[i] = NULL;
else else
{ {
//Get metadata for file name //Get metadata for file name
@ -198,6 +196,9 @@ void ExtractSubtitles(const char* path, const char* outPath)
{ {
AVFormatContext* outputContext = outputList[i]; AVFormatContext* outputContext = outputList[i];
if (outputContext == NULL)
continue;
av_write_trailer(outputContext); av_write_trailer(outputContext);
if (outputContext && !(outputContext->flags & AVFMT_NOFILE)) if (outputContext && !(outputContext->flags & AVFMT_NOFILE))
@ -205,5 +206,5 @@ void ExtractSubtitles(const char* path, const char* outPath)
avformat_free_context(outputContext); avformat_free_context(outputContext);
} }
delete[] outputList; //delete[] outputList;
} }