Vita3K/vita3k/codec/src/decoder.cpp
Pedro Montes Alcalde 34565e3ef4
Vita2024K: Happy 2024
2024-01-01 12:36:32 -03:00

61 lines
1.8 KiB
C++

// Vita3K emulator project
// Copyright (C) 2024 Vita3K team
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#include <codec/state.h>
extern "C" {
#include <libavcodec/avcodec.h>
}
#include <util/log.h>
#include <cassert>
uint32_t DecoderState::get(DecoderQuery query) {
return 0;
}
uint32_t DecoderState::get_es_size() {
return std::numeric_limits<uint32_t>::max();
}
void DecoderState::flush() {
avcodec_flush_buffers(context);
}
DecoderState::~DecoderState() {
avcodec_free_context(&context);
}
// Handy to have this in logs, some debuggers dont seem to be able to evaluate there error macros properly.
std::string codec_error_name(int error) {
switch (error) {
case AVERROR(EAGAIN):
return "Requires Another Call (AVERROR(EAGAIN))";
case AVERROR_EOF:
return "End of File (AVERROR_EOF)";
case AVERROR(EINVAL):
return "Invalid Call (AVERROR(EINVAL))";
case AVERROR(ENOMEM):
return "Out of Memory (AVERROR(ENOMEM))";
case AVERROR_INVALIDDATA:
return "Invalid Data (AVERROR_INVALIDDATA)";
default:
return log_hex(static_cast<uint32_t>(error));
}
}