23 #include <com/avpkit/ferry/JNIHelper.h>
24 #include <com/avpkit/ferry/Logger.h>
25 #include <com/avpkit/ferry/Mutex.h>
28 #include <com/avpkit/core/Global.h>
29 #include <com/avpkit/core/FfmpegIncludes.h>
30 #include <com/avpkit/core/Container.h>
31 #include <com/avpkit/core/ContainerFormat.h>
32 #include <com/avpkit/core/Codec.h>
33 #include <com/avpkit/core/Rational.h>
34 #include <com/avpkit/core/AudioSamples.h>
35 #include <com/avpkit/core/VideoPicture.h>
36 #include <com/avpkit/core/AudioResampler.h>
37 #include <com/avpkit/core/VideoResampler.h>
38 #include <com/avpkit/core/MediaDataWrapper.h>
39 #include <com/avpkit/core/config.h>
50 namespace com {
namespace avpkit {
namespace core
60 core_log_callback(
void* ptr,
int level,
const char* fmt, va_list va)
62 static Logger* ffmpegLogger = 0;
63 AVClass* avc = ptr ? *(AVClass**)ptr : 0;
65 int currentLevel = av_log_get_level();
67 if (level > currentLevel || currentLevel < AV_LOG_PANIC)
80 if (level <= AV_LOG_ERROR)
81 logLevel = Logger::LEVEL_ERROR;
82 else if (level <= AV_LOG_WARNING)
83 logLevel = Logger::LEVEL_WARN;
84 else if (level <= AV_LOG_INFO)
85 logLevel = Logger::LEVEL_INFO;
86 else if (level <= AV_LOG_DEBUG)
87 logLevel = Logger::LEVEL_DEBUG;
89 logLevel = Logger::LEVEL_TRACE;
92 char revisedFmt[1024];
93 revisedFmt[
sizeof(revisedFmt)-1] = 0;
96 snprintf(revisedFmt,
sizeof(revisedFmt),
"[%s @ %p] %s",
97 avc->item_name(ptr), ptr, fmt);
101 snprintf(revisedFmt,
sizeof(revisedFmt),
"%s", fmt);
103 int len = strlen(revisedFmt);
104 if (len > 0 && revisedFmt[len-1] ==
'\n')
111 ffmpegLogger->logVA(0, 0, logLevel, revisedFmt, va);
117 JNIHelper* helper = JNIHelper::getHelper();
120 retval = helper->isInterrupted();
125 static int core_lockmgr_cb(
void** ctx,
enum AVLockOp op)
136 mutex = com::avpkit::ferry::Mutex::make();
140 case AV_LOCK_DESTROY:
145 if (mutex) mutex->lock();
147 case AV_LOCK_RELEASE:
148 if (mutex) mutex->unlock();
154 Global* Global :: sGlobal = 0;
161 av_lockmgr_register(core_lockmgr_cb);
162 av_log_set_callback(core_log_callback);
163 av_log_set_level(AV_LOG_ERROR);
165 avformat_network_init();
167 avfilter_register_all();
170 avdevice_register_all();
179 avformat_network_deinit();
183 Global :: destroyStaticGlobal(JavaVM*vm,
void*closure)
187 av_lockmgr_register(0);
194 com::avpkit::ferry::JNIHelper::sRegisterTerminationCallback(
195 Global::destroyStaticGlobal,
197 mLock = com::avpkit::ferry::Mutex::make();
210 if (sGlobal && sGlobal->mLock)
211 sGlobal->mLock->lock();
218 if (sGlobal && sGlobal->mLock)
219 sGlobal->mLock->unlock();
225 return ((int64_t)getVersionMajor())<<48 | ((int64_t)getVersionMinor())<<32 | (int64_t)getVersionRevision();
231 return VS_LIB_MAJOR_VERSION;
237 return VS_LIB_MINOR_VERSION;
250 return PACKAGE_VERSION
"." VS_STRINGIFY(VS_REVISION);
256 return LIBAVFORMAT_VERSION_INT;
262 return AV_STRINGIFY(LIBAVFORMAT_VERSION);
268 return LIBAVCODEC_VERSION_INT;
274 return AV_STRINGIFY(LIBAVCODEC_VERSION);
281 if (level < AV_LOG_PANIC)
282 av_log_set_level(AV_LOG_QUIET);
283 else if (level < AV_LOG_FATAL)
284 av_log_set_level(AV_LOG_PANIC);
285 else if (level < AV_LOG_ERROR)
286 av_log_set_level(AV_LOG_FATAL);
287 else if (level < AV_LOG_WARNING)
288 av_log_set_level(AV_LOG_ERROR);
289 else if (level < AV_LOG_INFO)
290 av_log_set_level(AV_LOG_WARNING);
291 else if (level < AV_LOG_VERBOSE)
292 av_log_set_level(AV_LOG_INFO);
293 else if (level < AV_LOG_DEBUG)
294 av_log_set_level(AV_LOG_VERBOSE);
296 av_log_set_level(AV_LOG_DEBUG);
A collection of static functions that refer to the entire package (like version getters).
static int avioInterruptCB(void *)
Internal Only.
static void deinit()
Internal Only.
static void unlock()
Unlock the global lock.
static const char * getVersionStr()
Get a string representation of the version of this library.
static const char * getAVCodecVersionStr()
Get the version of the FFMPEG libavcodec library we are compiled against.
static const char * getAVFormatVersionStr()
Get the version of the FFMPEG libavformat library we are compiled against.
static int32_t getVersionRevision()
Get the revision number of this library.
static int32_t getVersionMinor()
Get the minor version number of this library.
static int64_t getVersion()
Returns a 64 bit version number for this library.
static void setFFmpegLoggingLevel(int32_t level)
Internal Only.
static int getAVCodecVersion()
Get the version of the FFMPEG libavcodec library we are compiled against.
static void init()
Internal Only.
static void lock()
Performs a global-level lock of the AVPKIT library.
static int getAVFormatVersion()
Get the version of the FFMPEG libavformat library we are compiled against.
static int32_t getVersionMajor()
Get the major version number of this library.
The JNIHelper object contains a series of methods designed to assist functions when running inside a ...
static Logger * getStaticLogger(const char *aLoggerName)
Get a Logger object, but ask the Logger code to free it up once the JavaVM shuts down.
Level
Different logging levels (noiseness) supported by us.
virtual int32_t release()
Internal Only.
This library contains routines used by AVPKit libraries for "ferry"ing Java objects to and from nativ...
WARNING: Do not use logging in this class, and do not set any static file variables to values other t...