Compare commits
50 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c293dd421b | |||
| d46a5e1e66 | |||
| a32f0067d4 | |||
| aead62b215 | |||
| b20376a785 | |||
| e0b4aacf92 | |||
| c461ea76d3 | |||
| ff1b1c4935 | |||
| 28e52ed774 | |||
| b68ffc3053 | |||
| 1336eab42f | |||
| e01989639d | |||
| 1b041324b4 | |||
| df3faba968 | |||
| 1b3b2c3c2f | |||
| d9d31985df | |||
| 322877b3c3 | |||
| 9d414b9790 | |||
| 270fc3f1ad | |||
| d2ef2da94b | |||
| f92c5288b9 | |||
| 248a6cba7a | |||
| 318efe8a5d | |||
| ea9abafaa7 | |||
| 9ede8768f5 | |||
| 1fcf112ed0 | |||
| ace472d20c | |||
| 36fa6b0028 | |||
| 29ca9e37e7 | |||
| f0a65465e9 | |||
| 4808e4c686 | |||
| 41f55f415e | |||
| 3716c4623b | |||
| 7ccf16f130 | |||
| 2cc3a9b0db | |||
| 21c071bebe | |||
| caa4ac1f9b | |||
| 09caf1e997 | |||
| b3109cf276 | |||
| 4bd20725a8 | |||
| 0a127d4370 | |||
| ba7afe784d | |||
| e73224d560 | |||
| 4d544fa7ca | |||
| d500463706 | |||
| a3b95188fb | |||
| 7d27ab7be5 | |||
| 7681389a9c | |||
| e85b08e7c2 | |||
| d298c9ac3b |
@@ -1,11 +1,11 @@
|
||||
# MobileFFmpeg [](https://gitter.im/mobile-ffmpeg/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [  ](https://bintray.com/tanersener/maven/mobile-ffmpeg-full/_latestVersion)
|
||||
# MobileFFmpeg [](https://gitter.im/mobile-ffmpeg/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)   
|
||||
|
||||
FFmpeg for Android and IOS
|
||||
|
||||
<img src="https://github.com/tanersener/mobile-ffmpeg/blob/dev-v2.x/docs/mobile-ffmpeg-logo-v4.png" width="240">
|
||||
<img src="https://github.com/tanersener/mobile-ffmpeg/blob/dev-v2.x/docs/assets/mobile-ffmpeg-logo-v4.png" width="240">
|
||||
|
||||
### 1. Features
|
||||
- Use prebuilt binaries available under `Github`/`JCenter`/`CocoaPods` or build your own version with external libraries you need
|
||||
- Use binaries available at `Github`/`JCenter`/`CocoaPods` or build your own version with external libraries you need
|
||||
- Supports
|
||||
- Both Android and IOS
|
||||
- FFmpeg `v3.4.x` and `v4.0.x` releases
|
||||
@@ -17,7 +17,7 @@ FFmpeg for Android and IOS
|
||||
|
||||
`vid.stab`, `x264`, `x265`, `xvidcore`
|
||||
|
||||
- Exposes FFmpeg capabilities both directly from FFmpeg libraries and through MobileFFmpeg wrapper library
|
||||
- Exposes FFmpeg capabilities both from FFmpeg libraries and through MobileFFmpeg wrapper library
|
||||
- Creates shared libraries (.so for Android, .dylib for IOS)
|
||||
- Includes cross-compile instructions for 38 open-source libraries
|
||||
|
||||
@@ -31,18 +31,19 @@ FFmpeg for Android and IOS
|
||||
- Supports `armv7`, `armv7s`, `arm64`, `i386` and `x86_64` architectures
|
||||
- `ARC` enabled library
|
||||
- Built with `-fembed-bitcode` flag
|
||||
- Creates IOS dynamic universal (fat) library
|
||||
- Creates IOS shared/dynamic universal (fat) library
|
||||
- Creates IOS static universal (fat) library
|
||||
- Creates IOS dynamic framework for IOS 8 or later
|
||||
- Supports Xcode 7.3.1 or later
|
||||
|
||||
### 2. Using
|
||||
Prebuilt libraries are available under [Github](https://github.com/tanersener/mobile-ffmpeg/releases), [JCenter](https://bintray.com/bintray/jcenter) and [CocoaPods](https://cocoapods.org)
|
||||
Prebuilt libraries are available at [Github](https://github.com/tanersener/mobile-ffmpeg/releases), [JCenter](https://bintray.com/bintray/jcenter) and [CocoaPods](https://cocoapods.org). Refer to [Using IOS Universal Binaries](https://github.com/tanersener/mobile-ffmpeg/wiki/Using-IOS-Universal-Binaries) guide to import IOS universal binaries released at [Github](https://github.com/tanersener/mobile-ffmpeg/releases).
|
||||
|
||||
There are eight different prebuilt packages. Below you can see which external libraries are enabled in each of them.
|
||||
|
||||
| min | min-gpl | https | https-gpl | audio | video | full | full-gpl |
|
||||
| :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: |
|
||||
| - | vid.stab<sup>3</sup> <br/> x264<sup>1</sup> <br/> x265<sup>3</sup> <br/> xvidcore<sup>1</sup> | gnutls | gnutls <br/> vid.stab<sup>3</sup> <br/> x264<sup>1</sup> <br/> x265<sup>3</sup> <br/> xvidcore<sup>1</sup> | chromaprint<sup>3</sup> <br/> lame <br/> libilbc<sup>1</sup> <br/> libvorbis <br/> opencore-amr <br/> opus<sup>1</sup> <br/> shine <br/> soxr<sup>2</sup> <br/> speex <br/> wavpack | fontconfig <br/> freetype <br/> fribidi <br/> kvazaar <br/> libaom<sup>2</sup> <br/> libass <br/> libiconv <br/> libtheora <br/> libvpx <br/> snappy<sup>1</sup> | chromaprint<sup>3</sup> <br/> fontconfig <br/> freetype <br/> fribidi <br/> gmp <br/> gnutls <br/> kvazaar <br/> lame <br/> libaom<sup>2</sup> <br/> libass <br/> libiconv <br/> libilbc<sup>1</sup> <br/> libtheora <br/> libvorbis <br/> libvpx <br/> libwebp <br/> libxml2 <br/> opencore-amr <br/> opus<sup>1</sup> <br/> shine <br/> snappy<sup>1</sup> <br/> soxr<sup>2</sup> <br/> speex <br/> wavpack | chromaprint<sup>3</sup> <br/> fontconfig <br/> freetype <br/> fribidi <br/> gmp <br/> gnutls <br/> kvazaar <br/> lame <br/> libaom<sup>2</sup> <br/> libass <br/> libiconv <br/> libilbc<sup>1</sup> <br/> libtheora <br/> libvorbis <br/> libvpx <br/> libwebp <br/> libxml2 <br/> opencore-amr <br/> opus<sup>1</sup> <br/> shine <br/> snappy<sup>1</sup> <br/> soxr<sup>2</sup> <br/> speex <br/> vid.stab<sup>3</sup> <br/> wavpack <br/> x264<sup>1</sup> <br/> x265<sup>3</sup> <br/> xvidcore<sup>1</sup> |
|
||||
| [  ](https://bintray.com/tanersener/maven/mobile-ffmpeg-min/_latestVersion) | [  ](https://bintray.com/tanersener/maven/mobile-ffmpeg-min-gpl/_latestVersion) | [  ](https://bintray.com/tanersener/maven/mobile-ffmpeg-https/_latestVersion) | [  ](https://bintray.com/tanersener/maven/mobile-ffmpeg-https-gpl/_latestVersion) | [  ](https://bintray.com/tanersener/maven/mobile-ffmpeg-audio/_latestVersion) | [  ](https://bintray.com/tanersener/maven/mobile-ffmpeg-video/_latestVersion) | [  ](https://bintray.com/tanersener/maven/mobile-ffmpeg-full/_latestVersion) | [  ](https://bintray.com/tanersener/maven/mobile-ffmpeg-full-gpl/_latestVersion) |
|
||||
|
||||
<sup>1</sup> - Supported since `v1.1`
|
||||
|
||||
@@ -54,7 +55,7 @@ There are eight different prebuilt packages. Below you can see which external li
|
||||
1. Add MobileFFmpeg dependency from `jcenter()`
|
||||
```
|
||||
dependencies {`
|
||||
implementation 'com.arthenica:mobile-ffmpeg-full:2.1'
|
||||
implementation 'com.arthenica:mobile-ffmpeg-full:2.2'
|
||||
}
|
||||
```
|
||||
|
||||
@@ -103,13 +104,13 @@ There are eight different prebuilt packages. Below you can see which external li
|
||||
|
||||
7. Register custom fonts directory.
|
||||
```
|
||||
Config.setFontDirectory(this, "fonts", Collections.EMPTY_MAP);
|
||||
Config.setFontDirectory(this, "<folder with fonts>", Collections.EMPTY_MAP);
|
||||
```
|
||||
|
||||
#### 2.2 IOS
|
||||
1. Add MobileFFmpeg pod to your `Podfile`
|
||||
```
|
||||
pod 'mobile-ffmpeg-full', '~> 2.1'
|
||||
pod 'mobile-ffmpeg-full', '~> 2.2'
|
||||
```
|
||||
|
||||
2. Create and execute commands.
|
||||
@@ -161,18 +162,22 @@ There are eight different prebuilt packages. Below you can see which external li
|
||||
|
||||
7. Register custom fonts directory.
|
||||
```
|
||||
[MobileFFmpegConfig setFontDirectory:@"fonts" with:nil];
|
||||
[MobileFFmpegConfig setFontDirectory:@"<folder with fonts>" with:nil];
|
||||
```
|
||||
|
||||
#### 2.3 Test Application
|
||||
You can see how MobileFFmpeg is used inside an application by running test applications provided.
|
||||
There is an Android test application under the `android/test-app` folder and an IOS test application under the `ios/test-app` folder. Both applications are identical and supports command execution, video encoding, accessing https, encoding audio, burning subtitles and video stabilization.
|
||||
There is an Android test application under the `android/test-app` folder and an IOS test application, which requires
|
||||
`Xcode 9.x` or later, under the `ios/test-app` folder. Both applications are identical and supports command
|
||||
execution, video encoding, accessing https, encoding audio, burning subtitles and video stabilization.
|
||||
|
||||
<img src="https://github.com/tanersener/mobile-ffmpeg/blob/master/docs/assets/ios_test_app.gif" width="240">
|
||||
|
||||
### 3. Versions
|
||||
|
||||
- `MobileFFmpeg v1.x` is the previous stable, includes `FFmpeg v3.4.4`
|
||||
|
||||
- `MobileFFmpeg v2.x` is the current stable, includes `FFmpeg v4.0.2`
|
||||
- `MobileFFmpeg v2.x` is the current stable, includes `FFmpeg v4.0.3`
|
||||
|
||||
### 4. Building
|
||||
#### 4.1 Prerequisites
|
||||
@@ -192,7 +197,7 @@ Please visit [Android Prerequisites](https://github.com/tanersener/mobile-ffmpeg
|
||||
|
||||
3. IOS builds need these extra packages and tools.
|
||||
- **IOS SDK 7.0.x** or later
|
||||
- **Xcode 8.x** or later
|
||||
- **Xcode 7.3.1** or later
|
||||
- **Command Line Tools**
|
||||
|
||||
#### 4.2 Build Scripts
|
||||
|
||||
@@ -38,7 +38,7 @@ PROJECT_NAME = "MobileFFmpeg Android API"
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 2.1
|
||||
PROJECT_NUMBER = 2.2
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
||||
@@ -5,8 +5,8 @@ android {
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 27
|
||||
versionCode 21
|
||||
versionName "2.1"
|
||||
versionCode 22
|
||||
versionName "2.2"
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
project.archivesBaseName = "mobile-ffmpeg"
|
||||
}
|
||||
|
||||
@@ -17,24 +17,441 @@
|
||||
* along with MobileFFmpeg. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
* CHANGES 09.2018
|
||||
* --------------------------------------------------------
|
||||
* - Merged with mobileffmpeg_config
|
||||
*
|
||||
* CHANGES 08.2018
|
||||
* --------------------------------------------------------
|
||||
* - Copied methods with avutil_log_ prefix from libavutil/log.c
|
||||
*/
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
#include "libavutil/bprint.h"
|
||||
#include "mobileffmpeg.h"
|
||||
#include "fftools_ffmpeg.h"
|
||||
|
||||
#include "mobileffmpeg.h"
|
||||
/** Callback data structure */
|
||||
struct CallbackData {
|
||||
int type; // 1 (log callback) or 2 (statistics callback)
|
||||
|
||||
int logLevel; // log level
|
||||
char *logData; // log data
|
||||
|
||||
int statisticsFrameNumber; // statistics frame number
|
||||
float statisticsFps; // statistics fps
|
||||
float statisticsQuality; // statistics quality
|
||||
int64_t statisticsSize; // statistics size
|
||||
int statisticsTime; // statistics time
|
||||
double statisticsBitrate; // statistics bitrate
|
||||
double statisticsSpeed; // statistics speed
|
||||
|
||||
struct CallbackData *next;
|
||||
};
|
||||
|
||||
/** Redirection control variables */
|
||||
pthread_mutex_t lockMutex;
|
||||
pthread_mutex_t monitorMutex;
|
||||
pthread_cond_t monitorCondition;
|
||||
|
||||
pthread_t callbackThread;
|
||||
int redirectionEnabled;
|
||||
|
||||
struct CallbackData *callbackDataHead;
|
||||
struct CallbackData *callbackDataTail;
|
||||
|
||||
/** Global reference to the virtual machine running */
|
||||
static JavaVM *globalVm;
|
||||
|
||||
/** Global reference of Config class in Java */
|
||||
static jclass configClass;
|
||||
|
||||
/** Global reference of log redirection method in Java */
|
||||
static jmethodID logMethod;
|
||||
|
||||
/** Global reference of statistics redirection method in Java */
|
||||
static jmethodID statisticsMethod;
|
||||
|
||||
/** Full name of the Config class */
|
||||
const char *configClassName = "com/arthenica/mobileffmpeg/Config";
|
||||
|
||||
/** Prototypes of native functions defined by Config class. */
|
||||
JNINativeMethod configMethods[] = {
|
||||
{"enableNativeRedirection", "()V", (void*) Java_com_arthenica_mobileffmpeg_Config_enableNativeRedirection},
|
||||
{"disableNativeRedirection", "()V", (void*) Java_com_arthenica_mobileffmpeg_Config_disableNativeRedirection},
|
||||
{"setNativeLogLevel", "(I)V", (void*) Java_com_arthenica_mobileffmpeg_Config_setNativeLogLevel},
|
||||
{"getNativeLogLevel", "()I", (void*) Java_com_arthenica_mobileffmpeg_Config_getNativeLogLevel}
|
||||
};
|
||||
|
||||
/** Prototypes of native functions defined by FFmpeg class. */
|
||||
JNINativeMethod ffmpegMethods[] = {
|
||||
{"getNativeFFmpegVersion", "()Ljava/lang/String;", (void*) Java_com_arthenica_mobileffmpeg_Config_getNativeFFmpegVersion},
|
||||
{"getNativeVersion", "()Ljava/lang/String;", (void*) Java_com_arthenica_mobileffmpeg_Config_getNativeVersion},
|
||||
{"nativeExecute", "([Ljava/lang/String;)I", (void*) Java_com_arthenica_mobileffmpeg_Config_nativeExecute},
|
||||
{"nativeCancel", "()V", (void*) Java_com_arthenica_mobileffmpeg_Config_nativeCancel}
|
||||
};
|
||||
|
||||
/** Forward declaration for function defined in fftools_ffmpeg.c */
|
||||
int execute(int argc, char **argv);
|
||||
|
||||
/** Full name of the FFmpeg class */
|
||||
const char *ffmpegClassName = "com/arthenica/mobileffmpeg/FFmpeg";
|
||||
/** DEFINES LINE SIZE USED FOR LOGGING */
|
||||
#define LOG_LINE_SIZE 1024
|
||||
|
||||
/** Prototypes of native functions defined by FFmpeg class. */
|
||||
JNINativeMethod ffmpegMethods[] = {
|
||||
{"getFFmpegVersion", "()Ljava/lang/String;", (void*) Java_com_arthenica_mobileffmpeg_FFmpeg_getFFmpegVersion},
|
||||
{"getVersion", "()Ljava/lang/String;", (void*) Java_com_arthenica_mobileffmpeg_FFmpeg_getVersion},
|
||||
{"execute", "([Ljava/lang/String;)I", (void*) Java_com_arthenica_mobileffmpeg_FFmpeg_execute}
|
||||
};
|
||||
static const char *avutil_log_get_level_str(int level) {
|
||||
switch (level) {
|
||||
case AV_LOG_QUIET:
|
||||
return "quiet";
|
||||
case AV_LOG_DEBUG:
|
||||
return "debug";
|
||||
case AV_LOG_VERBOSE:
|
||||
return "verbose";
|
||||
case AV_LOG_INFO:
|
||||
return "info";
|
||||
case AV_LOG_WARNING:
|
||||
return "warning";
|
||||
case AV_LOG_ERROR:
|
||||
return "error";
|
||||
case AV_LOG_FATAL:
|
||||
return "fatal";
|
||||
case AV_LOG_PANIC:
|
||||
return "panic";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
static void avutil_log_format_line(void *avcl, int level, const char *fmt, va_list vl, AVBPrint part[4], int *print_prefix) {
|
||||
int flags = av_log_get_flags();
|
||||
AVClass* avc = avcl ? *(AVClass **) avcl : NULL;
|
||||
av_bprint_init(part+0, 0, 1);
|
||||
av_bprint_init(part+1, 0, 1);
|
||||
av_bprint_init(part+2, 0, 1);
|
||||
av_bprint_init(part+3, 0, 65536);
|
||||
|
||||
if (*print_prefix && avc) {
|
||||
if (avc->parent_log_context_offset) {
|
||||
AVClass** parent = *(AVClass ***) (((uint8_t *) avcl) +
|
||||
avc->parent_log_context_offset);
|
||||
if (parent && *parent) {
|
||||
av_bprintf(part+0, "[%s @ %p] ",
|
||||
(*parent)->item_name(parent), parent);
|
||||
}
|
||||
}
|
||||
av_bprintf(part+1, "[%s @ %p] ",
|
||||
avc->item_name(avcl), avcl);
|
||||
}
|
||||
|
||||
if (*print_prefix && (level > AV_LOG_QUIET) && (flags & AV_LOG_PRINT_LEVEL))
|
||||
av_bprintf(part+2, "[%s] ", avutil_log_get_level_str(level));
|
||||
|
||||
av_vbprintf(part+3, fmt, vl);
|
||||
|
||||
if(*part[0].str || *part[1].str || *part[2].str || *part[3].str) {
|
||||
char lastc = part[3].len && part[3].len <= part[3].size ? part[3].str[part[3].len - 1] : 0;
|
||||
*print_prefix = lastc == '\n' || lastc == '\r';
|
||||
}
|
||||
}
|
||||
|
||||
static void avutil_log_sanitize(uint8_t *line) {
|
||||
while(*line){
|
||||
if(*line < 0x08 || (*line > 0x0D && *line < 0x20))
|
||||
*line='?';
|
||||
line++;
|
||||
}
|
||||
}
|
||||
|
||||
void mutexInit() {
|
||||
pthread_mutexattr_t attributes;
|
||||
pthread_mutexattr_init(&attributes);
|
||||
pthread_mutexattr_settype(&attributes, PTHREAD_MUTEX_RECURSIVE_NP);
|
||||
|
||||
pthread_mutex_init(&lockMutex, &attributes);
|
||||
pthread_mutexattr_destroy(&attributes);
|
||||
}
|
||||
|
||||
void monitorInit() {
|
||||
pthread_mutexattr_t attributes;
|
||||
pthread_mutexattr_init(&attributes);
|
||||
pthread_mutexattr_settype(&attributes, PTHREAD_MUTEX_RECURSIVE_NP);
|
||||
|
||||
pthread_condattr_t cattributes;
|
||||
pthread_condattr_init(&cattributes);
|
||||
pthread_condattr_setpshared(&cattributes, PTHREAD_PROCESS_PRIVATE);
|
||||
|
||||
pthread_mutex_init(&monitorMutex, &attributes);
|
||||
pthread_mutexattr_destroy(&attributes);
|
||||
|
||||
pthread_cond_init(&monitorCondition, &cattributes);
|
||||
pthread_condattr_destroy(&cattributes);
|
||||
}
|
||||
|
||||
void mutexUnInit() {
|
||||
pthread_mutex_destroy(&lockMutex);
|
||||
}
|
||||
|
||||
void monitorUnInit() {
|
||||
pthread_mutex_destroy(&monitorMutex);
|
||||
pthread_cond_destroy(&monitorCondition);
|
||||
}
|
||||
|
||||
void mutexLock() {
|
||||
pthread_mutex_lock(&lockMutex);
|
||||
}
|
||||
|
||||
void mutexUnlock() {
|
||||
pthread_mutex_unlock(&lockMutex);
|
||||
}
|
||||
|
||||
void monitorWait(int milliSeconds) {
|
||||
struct timeval tp;
|
||||
struct timespec ts;
|
||||
int rc;
|
||||
|
||||
rc = gettimeofday(&tp, NULL);
|
||||
if (rc) {
|
||||
return;
|
||||
}
|
||||
|
||||
ts.tv_sec = tp.tv_sec;
|
||||
ts.tv_nsec = tp.tv_usec * 1000;
|
||||
ts.tv_sec += milliSeconds / 1000;
|
||||
ts.tv_nsec += (milliSeconds % 1000)*1000000;
|
||||
|
||||
pthread_mutex_lock(&monitorMutex);
|
||||
pthread_cond_timedwait(&monitorCondition, &monitorMutex, &ts);
|
||||
pthread_mutex_unlock(&monitorMutex);
|
||||
}
|
||||
|
||||
void monitorNotify() {
|
||||
pthread_mutex_lock(&monitorMutex);
|
||||
pthread_cond_signal(&monitorCondition);
|
||||
pthread_mutex_unlock(&monitorMutex);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds log data to the end of callback data list.
|
||||
*/
|
||||
void logCallbackDataAdd(int level, const char *data) {
|
||||
|
||||
// CREATE DATA STRUCT FIRST
|
||||
struct CallbackData *newData = (struct CallbackData*)malloc(sizeof(struct CallbackData));
|
||||
newData->type = 1;
|
||||
newData->logLevel = level;
|
||||
size_t dataSize = strlen(data) + 1;
|
||||
newData->logData = (char*)malloc(dataSize);
|
||||
memcpy(newData->logData, data, dataSize);
|
||||
newData->next = NULL;
|
||||
|
||||
mutexLock();
|
||||
|
||||
// INSERT IT TO THE END OF QUEUE
|
||||
if (callbackDataTail == NULL) {
|
||||
callbackDataTail = newData;
|
||||
|
||||
if (callbackDataHead != NULL) {
|
||||
LOGE("Dangling callback data head detected. This can cause memory leak.");
|
||||
} else {
|
||||
callbackDataHead = newData;
|
||||
}
|
||||
} else {
|
||||
struct CallbackData *oldTail = callbackDataTail;
|
||||
oldTail->next = newData;
|
||||
|
||||
callbackDataTail = newData;
|
||||
}
|
||||
|
||||
mutexUnlock();
|
||||
|
||||
monitorNotify();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds statistics data to the end of callback data list.
|
||||
*/
|
||||
void statisticsCallbackDataAdd(int frameNumber, float fps, float quality, int64_t size, int time, double bitrate, double speed) {
|
||||
|
||||
// CREATE DATA STRUCT FIRST
|
||||
struct CallbackData *newData = (struct CallbackData*)malloc(sizeof(struct CallbackData));
|
||||
newData->type = 2;
|
||||
newData->statisticsFrameNumber = frameNumber;
|
||||
newData->statisticsFps = fps;
|
||||
newData->statisticsQuality = quality;
|
||||
newData->statisticsSize = size;
|
||||
newData->statisticsTime = time;
|
||||
newData->statisticsBitrate = bitrate;
|
||||
newData->statisticsSpeed = speed;
|
||||
|
||||
newData->next = NULL;
|
||||
|
||||
mutexLock();
|
||||
|
||||
// INSERT IT TO THE END OF QUEUE
|
||||
if (callbackDataTail == NULL) {
|
||||
callbackDataTail = newData;
|
||||
|
||||
if (callbackDataHead != NULL) {
|
||||
LOGE("Dangling callback data head detected. This can cause memory leak.");
|
||||
} else {
|
||||
callbackDataHead = newData;
|
||||
}
|
||||
} else {
|
||||
struct CallbackData *oldTail = callbackDataTail;
|
||||
oldTail->next = newData;
|
||||
|
||||
callbackDataTail = newData;
|
||||
}
|
||||
|
||||
mutexUnlock();
|
||||
|
||||
monitorNotify();
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes head of callback data list.
|
||||
*/
|
||||
struct CallbackData *callbackDataRemove() {
|
||||
struct CallbackData *currentData;
|
||||
|
||||
mutexLock();
|
||||
|
||||
if (callbackDataHead == NULL) {
|
||||
currentData = NULL;
|
||||
} else {
|
||||
currentData = callbackDataHead;
|
||||
|
||||
struct CallbackData *nextHead = currentData->next;
|
||||
if (nextHead == NULL) {
|
||||
if (callbackDataHead != callbackDataTail) {
|
||||
LOGE("Head and tail callback data pointers do not match for single callback data element. This can cause memory leak.");
|
||||
} else {
|
||||
callbackDataTail = NULL;
|
||||
}
|
||||
callbackDataHead = NULL;
|
||||
|
||||
} else {
|
||||
callbackDataHead = nextHead;
|
||||
}
|
||||
}
|
||||
|
||||
mutexUnlock();
|
||||
|
||||
return currentData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback function for FFmpeg logs.
|
||||
*
|
||||
* \param pointer to AVClass struct
|
||||
* \param level
|
||||
* \param format
|
||||
* \param arguments
|
||||
*/
|
||||
void mobileffmpeg_log_callback_function(void *ptr, int level, const char* format, va_list vargs) {
|
||||
char line[LOG_LINE_SIZE];
|
||||
AVBPrint part[4];
|
||||
int print_prefix = 1;
|
||||
|
||||
if (level >= 0) {
|
||||
level &= 0xff;
|
||||
}
|
||||
|
||||
avutil_log_format_line(ptr, level, format, vargs, part, &print_prefix);
|
||||
snprintf(line, sizeof(line), "%s%s%s%s", part[0].str, part[1].str, part[2].str, part[3].str);
|
||||
|
||||
avutil_log_sanitize(part[0].str);
|
||||
logCallbackDataAdd(level, part[0].str);
|
||||
avutil_log_sanitize(part[1].str);
|
||||
logCallbackDataAdd(level, part[1].str);
|
||||
avutil_log_sanitize(part[2].str);
|
||||
logCallbackDataAdd(level, part[2].str);
|
||||
avutil_log_sanitize(part[3].str);
|
||||
logCallbackDataAdd(level, part[3].str);
|
||||
|
||||
av_bprint_finalize(part+3, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback function for FFmpeg statistics.
|
||||
*
|
||||
* \param frameNumber last processed frame number
|
||||
* \param fps frames processed per second
|
||||
* \param quality quality of the output stream (video only)
|
||||
* \param size size in bytes
|
||||
* \param time processed output duration
|
||||
* \param bitrate output bit rate in kbits/s
|
||||
* \param speed processing speed = processed duration / operation duration
|
||||
*/
|
||||
void mobileffmpeg_statistics_callback_function(int frameNumber, float fps, float quality, int64_t size, int time, double bitrate, double speed) {
|
||||
statisticsCallbackDataAdd(frameNumber, fps, quality, size, time, bitrate, speed);
|
||||
}
|
||||
|
||||
/**
|
||||
* Forwards callback messages to Java classes.
|
||||
*/
|
||||
void *callbackThreadFunction() {
|
||||
JNIEnv *env;
|
||||
jint getEnvRc = (*globalVm)->GetEnv(globalVm, (void**) &env, JNI_VERSION_1_6);
|
||||
if (getEnvRc != JNI_OK) {
|
||||
if (getEnvRc != JNI_EDETACHED) {
|
||||
LOGE("Callback thread failed to GetEnv for class %s with rc %d.\n", configClassName, getEnvRc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if ((*globalVm)->AttachCurrentThread(globalVm, &env, NULL) != 0) {
|
||||
LOGE("Callback thread failed to AttachCurrentThread for class %s.\n", configClassName);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
LOGD("Callback thread started.\n");
|
||||
|
||||
while(redirectionEnabled) {
|
||||
|
||||
struct CallbackData *callbackData = callbackDataRemove();
|
||||
if (callbackData != NULL) {
|
||||
if (callbackData->type == 1) {
|
||||
|
||||
// LOG CALLBACK
|
||||
|
||||
size_t size = strlen(callbackData->logData);
|
||||
|
||||
jbyteArray byteArray = (jbyteArray) (*env)->NewByteArray(env, size);
|
||||
(*env)->SetByteArrayRegion(env, byteArray, 0, size, (jbyte *)callbackData->logData);
|
||||
(*env)->CallStaticVoidMethod(env, configClass, logMethod, callbackData->logLevel, byteArray);
|
||||
(*env)->DeleteLocalRef(env, byteArray);
|
||||
|
||||
// CLEAN LOG DATA
|
||||
free(callbackData->logData);
|
||||
|
||||
} else {
|
||||
|
||||
// STATISTICS CALLBACK
|
||||
|
||||
(*env)->CallStaticVoidMethod(env, configClass, statisticsMethod,
|
||||
callbackData->statisticsFrameNumber, callbackData->statisticsFps,
|
||||
callbackData->statisticsQuality, callbackData->statisticsSize,
|
||||
callbackData->statisticsTime, callbackData->statisticsBitrate,
|
||||
callbackData->statisticsSpeed);
|
||||
|
||||
}
|
||||
|
||||
// CLEAN STRUCT
|
||||
callbackData->next = NULL;
|
||||
free(callbackData);
|
||||
|
||||
} else {
|
||||
monitorWait(100);
|
||||
}
|
||||
}
|
||||
|
||||
(*globalVm)->DetachCurrentThread(globalVm);
|
||||
|
||||
LOGD("Callback thread stopped.\n");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when 'mobileffmpeg' native library is loaded.
|
||||
@@ -46,55 +463,158 @@ JNINativeMethod ffmpegMethods[] = {
|
||||
jint JNI_OnLoad(JavaVM *vm, void *reserved) {
|
||||
JNIEnv *env;
|
||||
if ((*vm)->GetEnv(vm, (void**)(&env), JNI_VERSION_1_6) != JNI_OK) {
|
||||
LOGE("OnLoad failed to GetEnv for class %s.\n", ffmpegClassName);
|
||||
LOGE("OnLoad failed to GetEnv for class %s.\n", configClassName);
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
jclass ffmpegClass = (*env)->FindClass(env, ffmpegClassName);
|
||||
if (ffmpegClass == NULL) {
|
||||
LOGE("OnLoad failed to FindClass %s.\n", ffmpegClassName);
|
||||
jclass localConfigClass = (*env)->FindClass(env, configClassName);
|
||||
if (localConfigClass == NULL) {
|
||||
LOGE("OnLoad failed to FindClass %s.\n", configClassName);
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
if ((*env)->RegisterNatives(env, ffmpegClass, ffmpegMethods, 3) < 0) {
|
||||
LOGE("OnLoad failed to RegisterNatives for class %s.\n", ffmpegClassName);
|
||||
if ((*env)->RegisterNatives(env, localConfigClass, ffmpegMethods, 4) < 0) {
|
||||
LOGE("OnLoad failed to RegisterNatives for class %s.\n", configClassName);
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
if ((*env)->RegisterNatives(env, localConfigClass, configMethods, 4) < 0) {
|
||||
LOGE("OnLoad failed to RegisterNatives for class %s.\n", configClassName);
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
(*env)->GetJavaVM(env, &globalVm);
|
||||
|
||||
logMethod = (*env)->GetStaticMethodID(env, localConfigClass, "log", "(I[B)V");
|
||||
if (logMethod == NULL) {
|
||||
LOGE("OnLoad thread failed to GetMethodID for %s.\n", "log");
|
||||
(*globalVm)->DetachCurrentThread(globalVm);
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
statisticsMethod = (*env)->GetStaticMethodID(env, localConfigClass, "statistics", "(IFFJIDD)V");
|
||||
if (logMethod == NULL) {
|
||||
LOGE("OnLoad thread failed to GetMethodID for %s.\n", "statistics");
|
||||
(*globalVm)->DetachCurrentThread(globalVm);
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
configClass = (jclass) ((*env)->NewGlobalRef(env, localConfigClass));
|
||||
|
||||
redirectionEnabled = 0;
|
||||
|
||||
callbackDataHead = NULL;
|
||||
callbackDataTail = NULL;
|
||||
|
||||
mutexInit();
|
||||
monitorInit();
|
||||
|
||||
return JNI_VERSION_1_6;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns FFmpeg version bundled within the library.
|
||||
* Sets log level.
|
||||
*
|
||||
* \param env pointer to native method interface
|
||||
* \param reference to the class on which this method is invoked
|
||||
* \param log level
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_setNativeLogLevel(JNIEnv *env, jclass object, jint level) {
|
||||
av_log_set_level(level);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns current log level.
|
||||
*
|
||||
* \param env pointer to native method interface
|
||||
* \param reference to the class on which this method is invoked
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_com_arthenica_mobileffmpeg_Config_getNativeLogLevel(JNIEnv *env, jclass object) {
|
||||
return av_log_get_level();
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables log and statistics redirection.
|
||||
*
|
||||
* \param env pointer to native method interface
|
||||
* \param reference to the class on which this method is invoked
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_enableNativeRedirection(JNIEnv *env, jclass object) {
|
||||
mutexLock();
|
||||
|
||||
if (redirectionEnabled != 0) {
|
||||
mutexUnlock();
|
||||
return;
|
||||
}
|
||||
redirectionEnabled = 1;
|
||||
|
||||
mutexUnlock();
|
||||
|
||||
int rc = pthread_create(&callbackThread, 0, callbackThreadFunction, 0);
|
||||
if (rc != 0) {
|
||||
LOGE("Failed to create callback thread (rc=%d).\n", rc);
|
||||
return;
|
||||
}
|
||||
|
||||
av_log_set_callback(mobileffmpeg_log_callback_function);
|
||||
set_report_callback(mobileffmpeg_statistics_callback_function);
|
||||
}
|
||||
|
||||
/**
|
||||
* Disables log and statistics redirection.
|
||||
*
|
||||
* \param env pointer to native method interface
|
||||
* \param reference to the class on which this method is invoked
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_disableNativeRedirection(JNIEnv *env, jclass object) {
|
||||
|
||||
mutexLock();
|
||||
|
||||
if (redirectionEnabled != 1) {
|
||||
mutexUnlock();
|
||||
return;
|
||||
}
|
||||
redirectionEnabled = 0;
|
||||
|
||||
mutexUnlock();
|
||||
|
||||
av_log_set_callback(av_log_default_callback);
|
||||
set_report_callback(NULL);
|
||||
|
||||
monitorNotify();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns FFmpeg version bundled within the library natively.
|
||||
*
|
||||
* \param env pointer to native method interface
|
||||
* \param object reference to the class on which this method is invoked
|
||||
* \return FFmpeg version string
|
||||
*/
|
||||
JNIEXPORT jstring JNICALL Java_com_arthenica_mobileffmpeg_FFmpeg_getFFmpegVersion(JNIEnv *env, jclass object) {
|
||||
JNIEXPORT jstring JNICALL Java_com_arthenica_mobileffmpeg_Config_getNativeFFmpegVersion(JNIEnv *env, jclass object) {
|
||||
return (*env)->NewStringUTF(env, FFMPEG_VERSION);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns MobileFFmpeg library version.
|
||||
* Returns MobileFFmpeg library version natively.
|
||||
*
|
||||
* \param env pointer to native method interface
|
||||
* \param object reference to the class on which this method is invoked
|
||||
* \return MobileFFmpeg version string
|
||||
*/
|
||||
JNIEXPORT jstring JNICALL Java_com_arthenica_mobileffmpeg_FFmpeg_getVersion(JNIEnv *env, jclass object) {
|
||||
JNIEXPORT jstring JNICALL Java_com_arthenica_mobileffmpeg_Config_getNativeVersion(JNIEnv *env, jclass object) {
|
||||
return (*env)->NewStringUTF(env, MOBILE_FFMPEG_VERSION);
|
||||
}
|
||||
|
||||
/**
|
||||
* Synchronously executes FFmpeg command with arguments provided.
|
||||
* Synchronously executes FFmpeg command natively with arguments provided.
|
||||
*
|
||||
* \param env pointer to native method interface
|
||||
* \param object reference to the class on which this method is invoked
|
||||
* \param stringArray reference to the object holding FFmpeg command arguments
|
||||
* \return zero on successful execution, non-zero on error
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_com_arthenica_mobileffmpeg_FFmpeg_execute(JNIEnv *env, jclass object, jobjectArray stringArray) {
|
||||
JNIEXPORT jint JNICALL Java_com_arthenica_mobileffmpeg_Config_nativeExecute(JNIEnv *env, jclass object, jobjectArray stringArray) {
|
||||
jstring *tempArray = NULL;
|
||||
int argumentCount = 1;
|
||||
char **argv = NULL;
|
||||
@@ -142,11 +662,11 @@ JNIEXPORT jint JNICALL Java_com_arthenica_mobileffmpeg_FFmpeg_execute(JNIEnv *en
|
||||
}
|
||||
|
||||
/**
|
||||
* Cancels an ongoing operation.
|
||||
* Cancels an ongoing operation natively.
|
||||
*
|
||||
* \param env pointer to native method interface
|
||||
* \param object reference to the class on which this method is invoked
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_FFmpeg_cancel(JNIEnv *env, jclass object) {
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_nativeCancel(JNIEnv *env, jclass object) {
|
||||
cancel_operation();
|
||||
}
|
||||
|
||||
@@ -21,39 +21,86 @@
|
||||
#define MOBILE_FFMPEG_H
|
||||
|
||||
#include <jni.h>
|
||||
#include <android/log.h>
|
||||
|
||||
#include "libavutil/log.h"
|
||||
#include "libavutil/ffversion.h"
|
||||
#include "mobileffmpeg_config.h"
|
||||
|
||||
/** Library version string */
|
||||
#define MOBILE_FFMPEG_VERSION "2.1"
|
||||
#define MOBILE_FFMPEG_VERSION "2.2"
|
||||
|
||||
/** Defines tag used for Android logging. */
|
||||
#define LIB_NAME "mobile-ffmpeg"
|
||||
|
||||
/** Verbose Android logging macro. */
|
||||
#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, LIB_NAME, __VA_ARGS__)
|
||||
|
||||
/** Debug Android logging macro. */
|
||||
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LIB_NAME, __VA_ARGS__)
|
||||
|
||||
/** Info Android logging macro. */
|
||||
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LIB_NAME, __VA_ARGS__)
|
||||
|
||||
/** Warn Android logging macro. */
|
||||
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN, LIB_NAME, __VA_ARGS__)
|
||||
|
||||
/** Error Android logging macro. */
|
||||
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LIB_NAME, __VA_ARGS__)
|
||||
|
||||
/*
|
||||
* Class: com_arthenica_mobileffmpeg_FFmpeg
|
||||
* Method: getFFmpegVersion
|
||||
* Signature: ()Ljava/lang/String;
|
||||
*/
|
||||
JNIEXPORT jstring JNICALL Java_com_arthenica_mobileffmpeg_FFmpeg_getFFmpegVersion(JNIEnv *, jclass);
|
||||
|
||||
/*
|
||||
* Class: com_arthenica_mobileffmpeg_FFmpeg
|
||||
* Method: getVersion
|
||||
* Signature: ()Ljava/lang/String;
|
||||
*/
|
||||
JNIEXPORT jstring JNICALL Java_com_arthenica_mobileffmpeg_FFmpeg_getVersion(JNIEnv *, jclass);
|
||||
|
||||
/*
|
||||
* Class: com_arthenica_mobileffmpeg_FFmpeg
|
||||
* Method: execute
|
||||
* Signature: ([Ljava/lang/String;)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_com_arthenica_mobileffmpeg_FFmpeg_execute(JNIEnv *, jclass, jobjectArray);
|
||||
|
||||
/*
|
||||
* Class: com_arthenica_mobileffmpeg_FFmpeg
|
||||
* Method: cancel
|
||||
* Class: com_arthenica_mobileffmpeg_Config
|
||||
* Method: enableNativeRedirection
|
||||
* Signature: ()V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_FFmpeg_cancel(JNIEnv *, jclass);
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_enableNativeRedirection(JNIEnv *, jclass);
|
||||
|
||||
#endif /* MOBILE_FFMPEG_H */
|
||||
/*
|
||||
* Class: com_arthenica_mobileffmpeg_Config
|
||||
* Method: disableNativeRedirection
|
||||
* Signature: ()V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_disableNativeRedirection(JNIEnv *, jclass);
|
||||
|
||||
/*
|
||||
* Class: com_arthenica_mobileffmpeg_Config
|
||||
* Method: setNativeLogLevel
|
||||
* Signature: (I)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_setNativeLogLevel(JNIEnv *, jclass, jint);
|
||||
|
||||
/*
|
||||
* Class: com_arthenica_mobileffmpeg_Config
|
||||
* Method: getNativeLogLevel
|
||||
* Signature: ()I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_com_arthenica_mobileffmpeg_Config_getNativeLogLevel(JNIEnv *, jclass);
|
||||
|
||||
/*
|
||||
* Class: com_arthenica_mobileffmpeg_Config
|
||||
* Method: getNativeFFmpegVersion
|
||||
* Signature: ()Ljava/lang/String;
|
||||
*/
|
||||
JNIEXPORT jstring JNICALL Java_com_arthenica_mobileffmpeg_Config_getNativeFFmpegVersion(JNIEnv *, jclass);
|
||||
|
||||
/*
|
||||
* Class: com_arthenica_mobileffmpeg_Config
|
||||
* Method: getNativeVersion
|
||||
* Signature: ()Ljava/lang/String;
|
||||
*/
|
||||
JNIEXPORT jstring JNICALL Java_com_arthenica_mobileffmpeg_Config_getNativeVersion(JNIEnv *, jclass);
|
||||
|
||||
/*
|
||||
* Class: com_arthenica_mobileffmpeg_Config
|
||||
* Method: nativeExecute
|
||||
* Signature: ([Ljava/lang/String;)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_com_arthenica_mobileffmpeg_Config_nativeExecute(JNIEnv *, jclass, jobjectArray);
|
||||
|
||||
/*
|
||||
* Class: com_arthenica_mobileffmpeg_Config
|
||||
* Method: nativeCancel
|
||||
* Signature: ()V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_nativeCancel(JNIEnv *, jclass);
|
||||
|
||||
#endif /* MOBILE_FFMPEG_H */
|
||||
@@ -1,565 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2018 Taner Sener
|
||||
*
|
||||
* This file is part of MobileFFmpeg.
|
||||
*
|
||||
* MobileFFmpeg is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* MobileFFmpeg 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 Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with MobileFFmpeg. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
* CHANGES 08.2018
|
||||
* --------------------------------------------------------
|
||||
* - Copied methods with avutil_log_ prefix from libavutil/log.c
|
||||
*/
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
#include "fftools_ffmpeg.h"
|
||||
#include "mobileffmpeg_config.h"
|
||||
#include "libavutil/bprint.h"
|
||||
|
||||
/** Callback data structure */
|
||||
struct CallbackData {
|
||||
int type; // 1 (log callback) or 2 (statistics callback)
|
||||
|
||||
int logLevel; // log level
|
||||
char *logData; // log data
|
||||
|
||||
int statisticsFrameNumber; // statistics frame number
|
||||
float statisticsFps; // statistics fps
|
||||
float statisticsQuality; // statistics quality
|
||||
int64_t statisticsSize; // statistics size
|
||||
int statisticsTime; // statistics time
|
||||
double statisticsBitrate; // statistics bitrate
|
||||
double statisticsSpeed; // statistics speed
|
||||
|
||||
struct CallbackData *next;
|
||||
};
|
||||
|
||||
/** Redirection control variables */
|
||||
pthread_mutex_t lockMutex;
|
||||
pthread_mutex_t monitorMutex;
|
||||
pthread_cond_t monitorCondition;
|
||||
|
||||
pthread_t callbackThread;
|
||||
int redirectionEnabled;
|
||||
|
||||
struct CallbackData *callbackDataHead;
|
||||
struct CallbackData *callbackDataTail;
|
||||
|
||||
/** Global reference to the virtual machine running */
|
||||
static JavaVM *globalVm;
|
||||
|
||||
/** Global reference of Config class in Java */
|
||||
static jclass configClass;
|
||||
|
||||
/** Global reference of log redirection method in Java */
|
||||
static jmethodID logMethod;
|
||||
|
||||
/** Global reference of statistics redirection method in Java */
|
||||
static jmethodID statisticsMethod;
|
||||
|
||||
/** Full name of the Config class */
|
||||
const char *configClassName = "com/arthenica/mobileffmpeg/Config";
|
||||
|
||||
/** Prototypes of native functions defined by Config class. */
|
||||
JNINativeMethod configMethods[] = {
|
||||
{"enableNativeRedirection", "()V", (void*) Java_com_arthenica_mobileffmpeg_Config_enableNativeRedirection},
|
||||
{"disableNativeRedirection", "()V", (void*) Java_com_arthenica_mobileffmpeg_Config_disableNativeRedirection},
|
||||
{"setNativeLogLevel", "(I)V", (void*) Java_com_arthenica_mobileffmpeg_Config_setNativeLogLevel},
|
||||
{"getNativeLogLevel", "()I", (void*) Java_com_arthenica_mobileffmpeg_Config_getNativeLogLevel}
|
||||
};
|
||||
|
||||
/** DEFINES LINE SIZE USED FOR LOGGING */
|
||||
#define LOG_LINE_SIZE 1024
|
||||
|
||||
static const char *avutil_log_get_level_str(int level) {
|
||||
switch (level) {
|
||||
case AV_LOG_QUIET:
|
||||
return "quiet";
|
||||
case AV_LOG_DEBUG:
|
||||
return "debug";
|
||||
case AV_LOG_VERBOSE:
|
||||
return "verbose";
|
||||
case AV_LOG_INFO:
|
||||
return "info";
|
||||
case AV_LOG_WARNING:
|
||||
return "warning";
|
||||
case AV_LOG_ERROR:
|
||||
return "error";
|
||||
case AV_LOG_FATAL:
|
||||
return "fatal";
|
||||
case AV_LOG_PANIC:
|
||||
return "panic";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
static void avutil_log_format_line(void *avcl, int level, const char *fmt, va_list vl, AVBPrint part[4], int *print_prefix) {
|
||||
int flags = av_log_get_flags();
|
||||
AVClass* avc = avcl ? *(AVClass **) avcl : NULL;
|
||||
av_bprint_init(part+0, 0, 1);
|
||||
av_bprint_init(part+1, 0, 1);
|
||||
av_bprint_init(part+2, 0, 1);
|
||||
av_bprint_init(part+3, 0, 65536);
|
||||
|
||||
if (*print_prefix && avc) {
|
||||
if (avc->parent_log_context_offset) {
|
||||
AVClass** parent = *(AVClass ***) (((uint8_t *) avcl) +
|
||||
avc->parent_log_context_offset);
|
||||
if (parent && *parent) {
|
||||
av_bprintf(part+0, "[%s @ %p] ",
|
||||
(*parent)->item_name(parent), parent);
|
||||
}
|
||||
}
|
||||
av_bprintf(part+1, "[%s @ %p] ",
|
||||
avc->item_name(avcl), avcl);
|
||||
}
|
||||
|
||||
if (*print_prefix && (level > AV_LOG_QUIET) && (flags & AV_LOG_PRINT_LEVEL))
|
||||
av_bprintf(part+2, "[%s] ", avutil_log_get_level_str(level));
|
||||
|
||||
av_vbprintf(part+3, fmt, vl);
|
||||
|
||||
if(*part[0].str || *part[1].str || *part[2].str || *part[3].str) {
|
||||
char lastc = part[3].len && part[3].len <= part[3].size ? part[3].str[part[3].len - 1] : 0;
|
||||
*print_prefix = lastc == '\n' || lastc == '\r';
|
||||
}
|
||||
}
|
||||
|
||||
static void avutil_log_sanitize(uint8_t *line) {
|
||||
while(*line){
|
||||
if(*line < 0x08 || (*line > 0x0D && *line < 0x20))
|
||||
*line='?';
|
||||
line++;
|
||||
}
|
||||
}
|
||||
|
||||
void mutexInit() {
|
||||
pthread_mutexattr_t attributes;
|
||||
pthread_mutexattr_init(&attributes);
|
||||
pthread_mutexattr_settype(&attributes, PTHREAD_MUTEX_RECURSIVE_NP);
|
||||
|
||||
pthread_mutex_init(&lockMutex, &attributes);
|
||||
pthread_mutexattr_destroy(&attributes);
|
||||
}
|
||||
|
||||
void monitorInit() {
|
||||
pthread_mutexattr_t attributes;
|
||||
pthread_mutexattr_init(&attributes);
|
||||
pthread_mutexattr_settype(&attributes, PTHREAD_MUTEX_RECURSIVE_NP);
|
||||
|
||||
pthread_condattr_t cattributes;
|
||||
pthread_condattr_init(&cattributes);
|
||||
pthread_condattr_setpshared(&cattributes, PTHREAD_PROCESS_PRIVATE);
|
||||
|
||||
pthread_mutex_init(&monitorMutex, &attributes);
|
||||
pthread_mutexattr_destroy(&attributes);
|
||||
|
||||
pthread_cond_init(&monitorCondition, &cattributes);
|
||||
pthread_condattr_destroy(&cattributes);
|
||||
}
|
||||
|
||||
void mutexUnInit() {
|
||||
pthread_mutex_destroy(&lockMutex);
|
||||
}
|
||||
|
||||
void monitorUnInit() {
|
||||
pthread_mutex_destroy(&monitorMutex);
|
||||
pthread_cond_destroy(&monitorCondition);
|
||||
}
|
||||
|
||||
void mutexLock() {
|
||||
pthread_mutex_lock(&lockMutex);
|
||||
}
|
||||
|
||||
void mutexUnlock() {
|
||||
pthread_mutex_unlock(&lockMutex);
|
||||
}
|
||||
|
||||
void monitorWait(int milliSeconds) {
|
||||
struct timeval tp;
|
||||
struct timespec ts;
|
||||
int rc;
|
||||
|
||||
rc = gettimeofday(&tp, NULL);
|
||||
if (rc) {
|
||||
return;
|
||||
}
|
||||
|
||||
ts.tv_sec = tp.tv_sec;
|
||||
ts.tv_nsec = tp.tv_usec * 1000;
|
||||
ts.tv_sec += milliSeconds / 1000;
|
||||
ts.tv_nsec += (milliSeconds % 1000)*1000000;
|
||||
|
||||
pthread_mutex_lock(&monitorMutex);
|
||||
pthread_cond_timedwait(&monitorCondition, &monitorMutex, &ts);
|
||||
pthread_mutex_unlock(&monitorMutex);
|
||||
}
|
||||
|
||||
void monitorNotify() {
|
||||
pthread_mutex_lock(&monitorMutex);
|
||||
pthread_cond_signal(&monitorCondition);
|
||||
pthread_mutex_unlock(&monitorMutex);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds log data to the end of callback data list.
|
||||
*/
|
||||
void logCallbackDataAdd(int level, const char *data) {
|
||||
|
||||
// CREATE DATA STRUCT FIRST
|
||||
struct CallbackData *newData = (struct CallbackData*)malloc(sizeof(struct CallbackData));
|
||||
newData->type = 1;
|
||||
newData->logLevel = level;
|
||||
size_t dataSize = strlen(data) + 1;
|
||||
newData->logData = (char*)malloc(dataSize);
|
||||
memcpy(newData->logData, data, dataSize);
|
||||
newData->next = NULL;
|
||||
|
||||
mutexLock();
|
||||
|
||||
// INSERT IT TO THE END OF QUEUE
|
||||
if (callbackDataTail == NULL) {
|
||||
callbackDataTail = newData;
|
||||
|
||||
if (callbackDataHead != NULL) {
|
||||
LOGE("Dangling callback data head detected. This can cause memory leak.");
|
||||
} else {
|
||||
callbackDataHead = newData;
|
||||
}
|
||||
} else {
|
||||
struct CallbackData *oldTail = callbackDataTail;
|
||||
oldTail->next = newData;
|
||||
|
||||
callbackDataTail = newData;
|
||||
}
|
||||
|
||||
mutexUnlock();
|
||||
|
||||
monitorNotify();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds statistics data to the end of callback data list.
|
||||
*/
|
||||
void statisticsCallbackDataAdd(int frameNumber, float fps, float quality, int64_t size, int time, double bitrate, double speed) {
|
||||
|
||||
// CREATE DATA STRUCT FIRST
|
||||
struct CallbackData *newData = (struct CallbackData*)malloc(sizeof(struct CallbackData));
|
||||
newData->type = 2;
|
||||
newData->statisticsFrameNumber = frameNumber;
|
||||
newData->statisticsFps = fps;
|
||||
newData->statisticsQuality = quality;
|
||||
newData->statisticsSize = size;
|
||||
newData->statisticsTime = time;
|
||||
newData->statisticsBitrate = bitrate;
|
||||
newData->statisticsSpeed = speed;
|
||||
|
||||
newData->next = NULL;
|
||||
|
||||
mutexLock();
|
||||
|
||||
// INSERT IT TO THE END OF QUEUE
|
||||
if (callbackDataTail == NULL) {
|
||||
callbackDataTail = newData;
|
||||
|
||||
if (callbackDataHead != NULL) {
|
||||
LOGE("Dangling callback data head detected. This can cause memory leak.");
|
||||
} else {
|
||||
callbackDataHead = newData;
|
||||
}
|
||||
} else {
|
||||
struct CallbackData *oldTail = callbackDataTail;
|
||||
oldTail->next = newData;
|
||||
|
||||
callbackDataTail = newData;
|
||||
}
|
||||
|
||||
mutexUnlock();
|
||||
|
||||
monitorNotify();
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes head of callback data list.
|
||||
*/
|
||||
struct CallbackData *callbackDataRemove() {
|
||||
struct CallbackData *currentData;
|
||||
|
||||
mutexLock();
|
||||
|
||||
if (callbackDataHead == NULL) {
|
||||
currentData = NULL;
|
||||
} else {
|
||||
currentData = callbackDataHead;
|
||||
|
||||
struct CallbackData *nextHead = currentData->next;
|
||||
if (nextHead == NULL) {
|
||||
if (callbackDataHead != callbackDataTail) {
|
||||
LOGE("Head and tail callback data pointers do not match for single callback data element. This can cause memory leak.");
|
||||
} else {
|
||||
callbackDataTail = NULL;
|
||||
}
|
||||
callbackDataHead = NULL;
|
||||
|
||||
} else {
|
||||
callbackDataHead = nextHead;
|
||||
}
|
||||
}
|
||||
|
||||
mutexUnlock();
|
||||
|
||||
return currentData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback function for FFmpeg logs.
|
||||
*
|
||||
* \param pointer to AVClass struct
|
||||
* \param level
|
||||
* \param format
|
||||
* \param arguments
|
||||
*/
|
||||
void mobileffmpeg_log_callback_function(void *ptr, int level, const char* format, va_list vargs) {
|
||||
char line[LOG_LINE_SIZE];
|
||||
AVBPrint part[4];
|
||||
int print_prefix = 1;
|
||||
|
||||
if (level >= 0) {
|
||||
level &= 0xff;
|
||||
}
|
||||
|
||||
avutil_log_format_line(ptr, level, format, vargs, part, &print_prefix);
|
||||
snprintf(line, sizeof(line), "%s%s%s%s", part[0].str, part[1].str, part[2].str, part[3].str);
|
||||
|
||||
avutil_log_sanitize(part[0].str);
|
||||
logCallbackDataAdd(level, part[0].str);
|
||||
avutil_log_sanitize(part[1].str);
|
||||
logCallbackDataAdd(level, part[1].str);
|
||||
avutil_log_sanitize(part[2].str);
|
||||
logCallbackDataAdd(level, part[2].str);
|
||||
avutil_log_sanitize(part[3].str);
|
||||
logCallbackDataAdd(level, part[3].str);
|
||||
|
||||
av_bprint_finalize(part+3, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback function for FFmpeg statistics.
|
||||
*
|
||||
* \param frameNumber last processed frame number
|
||||
* \param fps frames processed per second
|
||||
* \param quality quality of the output stream (video only)
|
||||
* \param size size in bytes
|
||||
* \param time processed output duration
|
||||
* \param bitrate output bit rate in kbits/s
|
||||
* \param speed processing speed = processed duration / operation duration
|
||||
*/
|
||||
void mobileffmpeg_statistics_callback_function(int frameNumber, float fps, float quality, int64_t size, int time, double bitrate, double speed) {
|
||||
statisticsCallbackDataAdd(frameNumber, fps, quality, size, time, bitrate, speed);
|
||||
}
|
||||
|
||||
/**
|
||||
* Forwards callback messages to Java classes.
|
||||
*/
|
||||
void *callbackThreadFunction() {
|
||||
JNIEnv *env;
|
||||
jint getEnvRc = (*globalVm)->GetEnv(globalVm, (void**) &env, JNI_VERSION_1_6);
|
||||
if (getEnvRc != JNI_OK) {
|
||||
if (getEnvRc != JNI_EDETACHED) {
|
||||
LOGE("Callback thread failed to GetEnv for class %s with rc %d.\n", configClassName, getEnvRc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if ((*globalVm)->AttachCurrentThread(globalVm, &env, NULL) != 0) {
|
||||
LOGE("Callback thread failed to AttachCurrentThread for class %s.\n", configClassName);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
LOGD("Callback thread started.\n");
|
||||
|
||||
while(redirectionEnabled) {
|
||||
|
||||
struct CallbackData *callbackData = callbackDataRemove();
|
||||
if (callbackData != NULL) {
|
||||
if (callbackData->type == 1) {
|
||||
|
||||
// LOG CALLBACK
|
||||
|
||||
size_t size = strlen(callbackData->logData);
|
||||
|
||||
jbyteArray byteArray = (jbyteArray) (*env)->NewByteArray(env, size);
|
||||
(*env)->SetByteArrayRegion(env, byteArray, 0, size, (jbyte *)callbackData->logData);
|
||||
(*env)->CallStaticVoidMethod(env, configClass, logMethod, callbackData->logLevel, byteArray);
|
||||
(*env)->DeleteLocalRef(env, byteArray);
|
||||
|
||||
// CLEAN LOG DATA
|
||||
free(callbackData->logData);
|
||||
|
||||
} else {
|
||||
|
||||
// STATISTICS CALLBACK
|
||||
|
||||
(*env)->CallStaticVoidMethod(env, configClass, statisticsMethod,
|
||||
callbackData->statisticsFrameNumber, callbackData->statisticsFps,
|
||||
callbackData->statisticsQuality, callbackData->statisticsSize,
|
||||
callbackData->statisticsTime, callbackData->statisticsBitrate,
|
||||
callbackData->statisticsSpeed);
|
||||
|
||||
}
|
||||
|
||||
// CLEAN STRUCT
|
||||
callbackData->next = NULL;
|
||||
free(callbackData);
|
||||
|
||||
} else {
|
||||
monitorWait(100);
|
||||
}
|
||||
}
|
||||
|
||||
(*globalVm)->DetachCurrentThread(globalVm);
|
||||
|
||||
LOGD("Callback thread stopped.\n");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when 'mobileffmpeg-config' native library is loaded.
|
||||
*
|
||||
* \param vm pointer to the running virtual machine
|
||||
* \param reserved reserved
|
||||
* \return JNI version needed by 'mobileffmpeg' library
|
||||
*/
|
||||
jint JNI_OnLoad(JavaVM *vm, void *reserved) {
|
||||
JNIEnv *env;
|
||||
if ((*vm)->GetEnv(vm, (void**)(&env), JNI_VERSION_1_6) != JNI_OK) {
|
||||
LOGE("OnLoad failed to GetEnv for class %s.\n", configClassName);
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
jclass localConfigClass = (*env)->FindClass(env, configClassName);
|
||||
if (localConfigClass == NULL) {
|
||||
LOGE("OnLoad failed to FindClass %s.\n", configClassName);
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
if ((*env)->RegisterNatives(env, localConfigClass, configMethods, 4) < 0) {
|
||||
LOGE("OnLoad failed to RegisterNatives for class %s.\n", configClassName);
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
(*env)->GetJavaVM(env, &globalVm);
|
||||
|
||||
logMethod = (*env)->GetStaticMethodID(env, localConfigClass, "log", "(I[B)V");
|
||||
if (logMethod == NULL) {
|
||||
LOGE("OnLoad thread failed to GetMethodID for %s.\n", "log");
|
||||
(*globalVm)->DetachCurrentThread(globalVm);
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
statisticsMethod = (*env)->GetStaticMethodID(env, localConfigClass, "statistics", "(IFFJIDD)V");
|
||||
if (logMethod == NULL) {
|
||||
LOGE("OnLoad thread failed to GetMethodID for %s.\n", "statistics");
|
||||
(*globalVm)->DetachCurrentThread(globalVm);
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
configClass = (jclass) ((*env)->NewGlobalRef(env, localConfigClass));
|
||||
|
||||
redirectionEnabled = 0;
|
||||
|
||||
callbackDataHead = NULL;
|
||||
callbackDataTail = NULL;
|
||||
|
||||
mutexInit();
|
||||
monitorInit();
|
||||
|
||||
return JNI_VERSION_1_6;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets log level.
|
||||
*
|
||||
* \param env pointer to native method interface
|
||||
* \param reference to the class on which this method is invoked
|
||||
* \param log level
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_setNativeLogLevel(JNIEnv *env, jclass object, jint level) {
|
||||
av_log_set_level(level);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns current log level.
|
||||
*
|
||||
* \param env pointer to native method interface
|
||||
* \param reference to the class on which this method is invoked
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_com_arthenica_mobileffmpeg_Config_getNativeLogLevel(JNIEnv *env, jclass object) {
|
||||
return av_log_get_level();
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables log and statistics redirection.
|
||||
*
|
||||
* \param env pointer to native method interface
|
||||
* \param reference to the class on which this method is invoked
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_enableNativeRedirection(JNIEnv *env, jclass object) {
|
||||
mutexLock();
|
||||
|
||||
if (redirectionEnabled != 0) {
|
||||
mutexUnlock();
|
||||
return;
|
||||
}
|
||||
redirectionEnabled = 1;
|
||||
|
||||
mutexUnlock();
|
||||
|
||||
int rc = pthread_create(&callbackThread, 0, callbackThreadFunction, 0);
|
||||
if (rc != 0) {
|
||||
LOGE("Failed to create callback thread (rc=%d).\n", rc);
|
||||
return;
|
||||
}
|
||||
|
||||
av_log_set_callback(mobileffmpeg_log_callback_function);
|
||||
set_report_callback(mobileffmpeg_statistics_callback_function);
|
||||
}
|
||||
|
||||
/**
|
||||
* Disables log and statistics redirection.
|
||||
*
|
||||
* \param env pointer to native method interface
|
||||
* \param reference to the class on which this method is invoked
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_disableNativeRedirection(JNIEnv *env, jclass object) {
|
||||
|
||||
mutexLock();
|
||||
|
||||
if (redirectionEnabled != 1) {
|
||||
mutexUnlock();
|
||||
return;
|
||||
}
|
||||
redirectionEnabled = 0;
|
||||
|
||||
mutexUnlock();
|
||||
|
||||
av_log_set_callback(av_log_default_callback);
|
||||
set_report_callback(NULL);
|
||||
|
||||
monitorNotify();
|
||||
}
|
||||
@@ -1,76 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2018 Taner Sener
|
||||
*
|
||||
* This file is part of MobileFFmpeg.
|
||||
*
|
||||
* MobileFFmpeg is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* MobileFFmpeg 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 Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with MobileFFmpeg. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef MOBILE_FFMPEG_CONFIG_H
|
||||
#define MOBILE_FFMPEG_CONFIG_H
|
||||
|
||||
#include <jni.h>
|
||||
#include <android/log.h>
|
||||
|
||||
#include "libavutil/log.h"
|
||||
#include "libavutil/ffversion.h"
|
||||
#include "mobileffmpeg.h"
|
||||
|
||||
/** Defines tag used for Android logging. */
|
||||
#define LIB_NAME "mobile-ffmpeg"
|
||||
|
||||
/** Verbose Android logging macro. */
|
||||
#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, LIB_NAME, __VA_ARGS__)
|
||||
|
||||
/** Debug Android logging macro. */
|
||||
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LIB_NAME, __VA_ARGS__)
|
||||
|
||||
/** Info Android logging macro. */
|
||||
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LIB_NAME, __VA_ARGS__)
|
||||
|
||||
/** Warn Android logging macro. */
|
||||
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN, LIB_NAME, __VA_ARGS__)
|
||||
|
||||
/** Error Android logging macro. */
|
||||
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LIB_NAME, __VA_ARGS__)
|
||||
|
||||
/*
|
||||
* Class: com_arthenica_mobileffmpeg_Config
|
||||
* Method: enableNativeRedirection
|
||||
* Signature: ()V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_enableNativeRedirection(JNIEnv *, jclass);
|
||||
|
||||
/*
|
||||
* Class: com_arthenica_mobileffmpeg_Config
|
||||
* Method: disableNativeRedirection
|
||||
* Signature: ()V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_disableNativeRedirection(JNIEnv *, jclass);
|
||||
|
||||
/*
|
||||
* Class: com_arthenica_mobileffmpeg_Config
|
||||
* Method: setNativeLogLevel
|
||||
* Signature: (I)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_setNativeLogLevel(JNIEnv *, jclass, jint);
|
||||
|
||||
/*
|
||||
* Class: com_arthenica_mobileffmpeg_Config
|
||||
* Method: getNativeLogLevel
|
||||
* Signature: ()I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_com_arthenica_mobileffmpeg_Config_getNativeLogLevel(JNIEnv *, jclass);
|
||||
|
||||
#endif /* MOBILE_FFMPEG_CONFIG_H */
|
||||
@@ -30,6 +30,8 @@ import java.io.IOException;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import static com.arthenica.mobileffmpeg.FFmpeg.getVersion;
|
||||
|
||||
/**
|
||||
* <p>This class is used to configure MobileFFmpeg library utilities/tools.
|
||||
*
|
||||
@@ -71,6 +73,8 @@ public class Config {
|
||||
|
||||
static {
|
||||
|
||||
Log.i(Config.TAG, "Loading mobile-ffmpeg.");
|
||||
|
||||
/* ALL LIBRARIES LOADED AT STARTUP */
|
||||
String abiName = AbiDetect.getAbi();
|
||||
Abi abi = Abi.from(abiName);
|
||||
@@ -82,17 +86,20 @@ public class Config {
|
||||
boolean nativeLibraryLoaded = false;
|
||||
if (abi == Abi.ABI_ARMV7A_NEON) {
|
||||
try {
|
||||
System.loadLibrary("mobileffmpeg-config-armv7a-neon");
|
||||
System.loadLibrary("mobileffmpeg-armv7a-neon");
|
||||
nativeLibraryLoaded = true;
|
||||
} catch (UnsatisfiedLinkError e) {
|
||||
} catch (final UnsatisfiedLinkError e) {
|
||||
Log.i(Config.TAG, "NEON supported armeabi-v7a library not found. Loading default armeabi-v7a library.", e);
|
||||
abi = Abi.ABI_ARMV7A;
|
||||
}
|
||||
}
|
||||
|
||||
if (!nativeLibraryLoaded) {
|
||||
System.loadLibrary("mobileffmpeg-config");
|
||||
System.loadLibrary("mobileffmpeg");
|
||||
}
|
||||
|
||||
Log.i(Config.TAG, String.format("Loaded mobile-ffmpeg-%s-%s.", abi.getName(), getVersion()));
|
||||
|
||||
/* NATIVE LOG LEVEL IS RECEIVED ONLY ON STARTUP */
|
||||
activeLogLevel = Level.from(getNativeLogLevel());
|
||||
|
||||
@@ -109,6 +116,14 @@ public class Config {
|
||||
|
||||
/**
|
||||
* <p>Enables log and statistics redirection.
|
||||
* <p>When redirection is not enabled FFmpeg logs are printed to stderr. By enabling redirection, they are routed
|
||||
* to Logcat and can be routed further to a callback function.
|
||||
* <p>Statistics redirection behaviour is similar. Statistics are not printed at all if redirection is not enabled.
|
||||
* If it is enabled then it is possible to define a statistics callback function but if you don't, they are not
|
||||
* printed anywhere and only saved as <code>lastReceivedStatistics</code> data which can be polled with
|
||||
* {@link #getLastReceivedStatistics()}.
|
||||
* <p>Note that redirection is enabled by default. If you do not want to use its functionality please use
|
||||
* {@link #disableRedirection()} to disable it.
|
||||
*/
|
||||
public static void enableRedirection() {
|
||||
enableNativeRedirection();
|
||||
@@ -145,7 +160,7 @@ public class Config {
|
||||
/**
|
||||
* <p>Sets a callback function to redirect FFmpeg logs.
|
||||
*
|
||||
* @param newLogCallback new log callback function
|
||||
* @param newLogCallback new log callback function or NULL to disable a previously defined callback
|
||||
*/
|
||||
public static void enableLogCallback(final LogCallback newLogCallback) {
|
||||
logCallbackFunction = newLogCallback;
|
||||
@@ -154,7 +169,7 @@ public class Config {
|
||||
/**
|
||||
* <p>Sets a callback function to redirect FFmpeg statistics.
|
||||
*
|
||||
* @param statisticsCallback new statistics callback function
|
||||
* @param statisticsCallback new statistics callback function or NULL to disable a previously defined callback
|
||||
*/
|
||||
public static void enableStatisticsCallback(final StatisticsCallback statisticsCallback) {
|
||||
statisticsCallbackFunction = statisticsCallback;
|
||||
@@ -246,7 +261,7 @@ public class Config {
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Resets last received statistics.
|
||||
* <p>Resets last received statistics. It is recommended to call it before starting a new execution.
|
||||
*/
|
||||
public static void resetStatistics() {
|
||||
lastReceivedStatistics = new Statistics();
|
||||
@@ -263,7 +278,7 @@ public class Config {
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Registers fonts inside the given path, so they are available in FFmpeg filters.
|
||||
* <p>Registers fonts inside the given path, so they are available to use in FFmpeg filters.
|
||||
*
|
||||
* <p>Note that you need to build <code>MobileFFmpeg</code> with <code>fontconfig</code>
|
||||
* enabled or use a prebuilt package with <code>fontconfig</code> inside to use this feature.
|
||||
@@ -370,4 +385,33 @@ public class Config {
|
||||
*/
|
||||
private static native int getNativeLogLevel();
|
||||
|
||||
/**
|
||||
* <p>Returns FFmpeg version bundled within the library natively.
|
||||
*
|
||||
* @return FFmpeg version
|
||||
*/
|
||||
native static String getNativeFFmpegVersion();
|
||||
|
||||
/**
|
||||
* <p>Returns MobileFFmpeg library version natively.
|
||||
*
|
||||
* @return MobileFFmpeg version
|
||||
*/
|
||||
native static String getNativeVersion();
|
||||
|
||||
/**
|
||||
* <p>Synchronously executes FFmpeg natively with arguments provided.
|
||||
*
|
||||
* @param arguments FFmpeg command options/arguments as string array
|
||||
* @return zero on successful execution, 255 on user cancel and non-zero on error
|
||||
*/
|
||||
native static int nativeExecute(final String[] arguments);
|
||||
|
||||
/**
|
||||
* <p>Cancels an ongoing operation natively.
|
||||
*
|
||||
* <p>This function does not wait for termination to complete and returns immediately.
|
||||
*/
|
||||
native static void nativeCancel();
|
||||
|
||||
}
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
|
||||
package com.arthenica.mobileffmpeg;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
/**
|
||||
* <p>Main class for FFmpeg operations. Provides {@link #execute(String...)} method to execute
|
||||
* FFmpeg commands.
|
||||
@@ -39,14 +37,8 @@ public class FFmpeg {
|
||||
public static final int RETURN_CODE_CANCEL = 255;
|
||||
|
||||
static {
|
||||
Log.i(Config.TAG, "Loading mobile-ffmpeg.");
|
||||
|
||||
System.loadLibrary("mobileffmpeg");
|
||||
|
||||
AbiDetect.class.getName();
|
||||
Config.class.getName();
|
||||
|
||||
Log.i(Config.TAG, String.format("Loaded mobile-ffmpeg-%s-%s.", AbiDetect.getAbi(), getVersion()));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -60,14 +52,18 @@ public class FFmpeg {
|
||||
*
|
||||
* @return FFmpeg version
|
||||
*/
|
||||
public native static String getFFmpegVersion();
|
||||
public static String getFFmpegVersion() {
|
||||
return Config.getNativeFFmpegVersion();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Returns MobileFFmpeg library version.
|
||||
*
|
||||
* @return MobileFFmpeg version
|
||||
*/
|
||||
public native static String getVersion();
|
||||
public static String getVersion() {
|
||||
return Config.getNativeVersion();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Synchronously executes FFmpeg with arguments provided.
|
||||
@@ -75,7 +71,9 @@ public class FFmpeg {
|
||||
* @param arguments FFmpeg command options/arguments as string array
|
||||
* @return zero on successful execution, 255 on user cancel and non-zero on error
|
||||
*/
|
||||
public native static int execute(final String[] arguments);
|
||||
public static int execute(final String[] arguments) {
|
||||
return Config.nativeExecute(arguments);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Synchronously executes FFmpeg with arguments provided.
|
||||
@@ -92,6 +90,8 @@ public class FFmpeg {
|
||||
*
|
||||
* <p>This function does not wait for termination to complete and returns immediately.
|
||||
*/
|
||||
public native static void cancel();
|
||||
public static void cancel() {
|
||||
Config.nativeCancel();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+5
-14
@@ -25,19 +25,10 @@ include $(BUILD_SHARED_LIBRARY)
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_ARM_MODE := $(MY_ARM_MODE)
|
||||
LOCAL_MODULE := mobileffmpeg
|
||||
LOCAL_SRC_FILES := $(MY_PATH)/mobileffmpeg.c
|
||||
LOCAL_SRC_FILES := $(MY_PATH)/mobileffmpeg.c $(MY_PATH)/fftools_cmdutils.c $(MY_PATH)/fftools_ffmpeg.c $(MY_PATH)/fftools_ffmpeg_opt.c $(MY_PATH)/fftools_ffmpeg_hw.c $(MY_PATH)/fftools_ffmpeg_filter.c
|
||||
LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter -Wno-switch -Wno-sign-compare -I${LOCAL_PATH}/../../prebuilt/android-$(TARGET_ARCH)/ffmpeg/include
|
||||
LOCAL_LDLIBS := -llog -lz -landroid
|
||||
LOCAL_SHARED_LIBRARIES := c++_shared mobileffmpeg-config
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_ARM_MODE := $(MY_ARM_MODE)
|
||||
LOCAL_MODULE := mobileffmpeg-config
|
||||
LOCAL_SRC_FILES := $(MY_PATH)/mobileffmpeg_config.c $(MY_PATH)/fftools_cmdutils.c $(MY_PATH)/fftools_ffmpeg.c $(MY_PATH)/fftools_ffmpeg_opt.c $(MY_PATH)/fftools_ffmpeg_hw.c $(MY_PATH)/fftools_ffmpeg_filter.c
|
||||
LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter -Wno-switch -Wno-sign-compare -I${LOCAL_PATH}/../../prebuilt/android-$(TARGET_ARCH)/ffmpeg/include
|
||||
LOCAL_LDLIBS := -llog -lz -landroid
|
||||
LOCAL_SHARED_LIBRARIES := libavfilter libavformat libavcodec libavutil libswresample libavdevice libswscale
|
||||
LOCAL_SHARED_LIBRARIES := c++_shared libavfilter libavformat libavcodec libavutil libswresample libavdevice libswscale
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
ifeq ($(TARGET_ARCH_ABI), armeabi-v7a)
|
||||
@@ -45,11 +36,11 @@ ifeq ($(TARGET_ARCH_ABI), armeabi-v7a)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_ARM_MODE := $(MY_ARM_MODE)
|
||||
LOCAL_MODULE := mobileffmpeg-config-armv7a-neon
|
||||
LOCAL_SRC_FILES := $(MY_PATH)/mobileffmpeg_config.c $(MY_PATH)/fftools_cmdutils.c $(MY_PATH)/fftools_ffmpeg.c $(MY_PATH)/fftools_ffmpeg_opt.c $(MY_PATH)/fftools_ffmpeg_hw.c $(MY_PATH)/fftools_ffmpeg_filter.c
|
||||
LOCAL_MODULE := mobileffmpeg-armv7a-neon
|
||||
LOCAL_SRC_FILES := $(MY_PATH)/mobileffmpeg.c $(MY_PATH)/fftools_cmdutils.c $(MY_PATH)/fftools_ffmpeg.c $(MY_PATH)/fftools_ffmpeg_opt.c $(MY_PATH)/fftools_ffmpeg_hw.c $(MY_PATH)/fftools_ffmpeg_filter.c
|
||||
LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter -Wno-switch -Wno-sign-compare -I${LOCAL_PATH}/../../prebuilt/android-$(TARGET_ARCH)/ffmpeg/include
|
||||
LOCAL_LDLIBS := -llog -lz -landroid
|
||||
LOCAL_SHARED_LIBRARIES := libavcodec-neon libavfilter-neon libswscale-neon libavformat libavutil libswresample libavdevice
|
||||
LOCAL_SHARED_LIBRARIES := c++_shared libavcodec-neon libavfilter-neon libswscale-neon libavformat libavutil libswresample libavdevice
|
||||
LOCAL_ARM_NEON := true
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@ android {
|
||||
applicationId "com.arthenica.mobileffmpeg.test"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 27
|
||||
versionCode 21
|
||||
versionName "2.1"
|
||||
versionCode 22
|
||||
versionName "2.2"
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
buildTypes {
|
||||
@@ -20,7 +20,7 @@ android {
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation 'com.arthenica:mobile-ffmpeg-full:2.1'
|
||||
implementation 'com.arthenica:mobile-ffmpeg-full:2.2'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
androidTestImplementation 'com.android.support.test:runner:1.0.2'
|
||||
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
|
||||
|
||||
@@ -780,15 +780,15 @@ download_gpl_library_source() {
|
||||
GPL_LIB_DEST_DIR="libvidstab"
|
||||
;;
|
||||
x264)
|
||||
GPL_LIB_URL="ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20180829-2245-stable.tar.bz2"
|
||||
GPL_LIB_FILE="x264-snapshot-20180829-2245-stable.tar.bz2"
|
||||
GPL_LIB_ORIG_DIR="x264-snapshot-20180829-2245-stable"
|
||||
GPL_LIB_URL="ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20181107-2245-stable.tar.bz2"
|
||||
GPL_LIB_FILE="x264-snapshot-20181107-2245-stable.tar.bz2"
|
||||
GPL_LIB_ORIG_DIR="x264-snapshot-20181107-2245-stable"
|
||||
GPL_LIB_DEST_DIR="x264"
|
||||
;;
|
||||
x265)
|
||||
GPL_LIB_URL="https://download.videolan.org/pub/videolan/x265/x265_2.8.tar.gz"
|
||||
GPL_LIB_FILE="x265-2.8.tar.gz"
|
||||
GPL_LIB_ORIG_DIR="x265_2.8"
|
||||
GPL_LIB_URL="https://download.videolan.org/pub/videolan/x265/x265_2.9.tar.gz"
|
||||
GPL_LIB_FILE="x265-2.9.tar.gz"
|
||||
GPL_LIB_ORIG_DIR="x265_2.9"
|
||||
GPL_LIB_DEST_DIR="x265"
|
||||
;;
|
||||
xvidcore)
|
||||
|
||||
@@ -60,6 +60,6 @@ fi
|
||||
make ${MOBILE_FFMPEG_DEBUG} -j$(get_cpu_count) || exit 1
|
||||
|
||||
# CREATE PACKAGE CONFIG MANUALLY
|
||||
create_fontconfig_package_config "2.13.0"
|
||||
create_fontconfig_package_config "2.13.1"
|
||||
|
||||
make install || exit 1
|
||||
|
||||
@@ -42,7 +42,7 @@ if [[ ${RECONF_libvorbis} -eq 1 ]]; then
|
||||
autoreconf_library ${LIB_NAME}
|
||||
fi
|
||||
|
||||
./configure \
|
||||
PKG_CONFIG= ./configure \
|
||||
--prefix=${BASEDIR}/prebuilt/android-$(get_target_build)/${LIB_NAME} \
|
||||
--with-pic \
|
||||
--with-sysroot=${ANDROID_NDK_ROOT}/toolchains/mobile-ffmpeg-${TOOLCHAIN}/sysroot \
|
||||
|
||||
+11
-14
@@ -43,20 +43,18 @@ fi
|
||||
cd ${BASEDIR}/src/${LIB_NAME} || exit 1
|
||||
|
||||
ASM_OPTIONS=""
|
||||
X265_SYSTEM_PROCESSOR="${ARCH}"
|
||||
case ${ARCH} in
|
||||
arm-v7a | arm-v7a-neon)
|
||||
ASM_OPTIONS="-DENABLE_ASSEMBLY=0 -DCROSS_COMPILE_ARM=1 -DSSE2_FOUND=0 -DSSE3_FOUND=0"
|
||||
ASM_OPTIONS="-DENABLE_ASSEMBLY=0 -DCROSS_COMPILE_ARM=1"
|
||||
;;
|
||||
arm64-v8a)
|
||||
ASM_OPTIONS="-DENABLE_ASSEMBLY=0 -DCROSS_COMPILE_ARM=1 -DSSE2_FOUND=0 -DSSE3_FOUND=0"
|
||||
ASM_OPTIONS="-DENABLE_ASSEMBLY=0 -DCROSS_COMPILE_ARM=1"
|
||||
;;
|
||||
x86)
|
||||
ASM_OPTIONS="-DENABLE_ASSEMBLY=0 -DCROSS_COMPILE_ARM=0 -DSSE2_FOUND=1 -DSSE3_FOUND=1"
|
||||
ASM_OPTIONS="-DENABLE_ASSEMBLY=0 -DCROSS_COMPILE_ARM=0"
|
||||
;;
|
||||
x86-64)
|
||||
ASM_OPTIONS="-DENABLE_ASSEMBLY=1 -DCROSS_COMPILE_ARM=0 -DSSE2_FOUND=1 -DSSE3_FOUND=1"
|
||||
X265_SYSTEM_PROCESSOR="x86_64"
|
||||
ASM_OPTIONS="-DENABLE_ASSEMBLY=0 -DCROSS_COMPILE_ARM=0"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -67,12 +65,11 @@ fi
|
||||
mkdir cmake-build || exit 1
|
||||
cd cmake-build || exit 1
|
||||
|
||||
# fix x86 and x86_64 assembly
|
||||
${SED_INLINE} 's/\-DPREFIX//g' ${BASEDIR}/src/x265/source/cmake/CMakeASM_NASMInformation.cmake
|
||||
${SED_INLINE} 's/win/elf/g' ${BASEDIR}/src/x265/source/cmake/CMakeASM_NASMInformation.cmake
|
||||
|
||||
# fix pointer array assignments
|
||||
${SED_INLINE} 's/parseCpuName(value, bError)/parseCpuName(value, bError, 0)/g' ${BASEDIR}/src/x265/source/common/param.cpp
|
||||
# apply detect512 patch
|
||||
rc=$(download "https://bitbucket.org/multicoreware/x265/issues/attachments/442/multicoreware/x265/1539002893.24/442/enable512.diff" "enable512.diff")
|
||||
cd ${BASEDIR}/src/${LIB_NAME}/source/common
|
||||
patch -p3 < ${MOBILE_FFMPEG_TMPDIR}/enable512.diff
|
||||
cd ${BASEDIR}/src/${LIB_NAME}/cmake-build
|
||||
|
||||
cmake -Wno-dev \
|
||||
-DCMAKE_VERBOSE_MAKEFILE=0 \
|
||||
@@ -93,12 +90,12 @@ cmake -Wno-dev \
|
||||
-DENABLE_PIC=1 \
|
||||
-DENABLE_CLI=0 \
|
||||
${ASM_OPTIONS} \
|
||||
-DCMAKE_SYSTEM_PROCESSOR="${X265_SYSTEM_PROCESSOR}" \
|
||||
-DCMAKE_SYSTEM_PROCESSOR="${ARCH}" \
|
||||
-DENABLE_SHARED=0 ../source || exit 1
|
||||
|
||||
make ${MOBILE_FFMPEG_DEBUG} -j$(get_cpu_count) || exit 1
|
||||
|
||||
# CREATE PACKAGE CONFIG MANUALLY
|
||||
create_x265_package_config "2.8"
|
||||
create_x265_package_config "2.9"
|
||||
|
||||
make install || exit 1
|
||||
|
||||
+41
-14
@@ -61,6 +61,23 @@ get_library_name() {
|
||||
esac
|
||||
}
|
||||
|
||||
get_static_archive_name() {
|
||||
case $1 in
|
||||
5) echo "libmp3lame.a" ;;
|
||||
6) echo "libass.a" ;;
|
||||
10) echo "libvpx.a" ;;
|
||||
12) echo "libxml2.a" ;;
|
||||
21) echo "libvidstab.a" ;;
|
||||
22) echo "libilbc.a" ;;
|
||||
26) echo "libaom.a" ;;
|
||||
28) echo "libgif.a" ;;
|
||||
30) echo "libogg.a" ;;
|
||||
31) echo "libpng.a" ;;
|
||||
32) echo "libuuid.a" ;;
|
||||
*) echo lib$(get_library_name $1).a
|
||||
esac
|
||||
}
|
||||
|
||||
get_arch_name() {
|
||||
case $1 in
|
||||
0) echo "armv7" ;;
|
||||
@@ -188,24 +205,34 @@ get_app_specific_cflags() {
|
||||
|
||||
APP_FLAGS=""
|
||||
case $1 in
|
||||
libwebp | xvidcore)
|
||||
APP_FLAGS="-fno-common -DPIC"
|
||||
;;
|
||||
shine)
|
||||
APP_FLAGS="-Wno-unused-function"
|
||||
fontconfig)
|
||||
case ${ARCH} in
|
||||
armv7 | armv7s | arm64)
|
||||
APP_FLAGS="-std=c99 -Wno-unused-function -D__IPHONE_OS_MIN_REQUIRED -D__IPHONE_VERSION_MIN_REQUIRED=30000"
|
||||
;;
|
||||
*)
|
||||
APP_FLAGS="-std=c99 -Wno-unused-function"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
ffmpeg)
|
||||
APP_FLAGS="-Wno-unused-function -DPIC"
|
||||
;;
|
||||
soxr | snappy)
|
||||
APP_FLAGS="-std=gnu99 -Wno-unused-function -DPIC"
|
||||
;;
|
||||
kvazaar)
|
||||
APP_FLAGS="-std=gnu99 -Wno-unused-function"
|
||||
;;
|
||||
libwebp | xvidcore)
|
||||
APP_FLAGS="-fno-common -DPIC"
|
||||
;;
|
||||
mobile-ffmpeg)
|
||||
APP_FLAGS="-std=c99 -Wno-unused-function -Wall -Wno-deprecated-declarations -Wno-pointer-sign -Wno-switch -Wno-unused-result -Wno-unused-variable -DPIC -fobjc-arc"
|
||||
;;
|
||||
shine)
|
||||
APP_FLAGS="-Wno-unused-function"
|
||||
;;
|
||||
soxr | snappy)
|
||||
APP_FLAGS="-std=gnu99 -Wno-unused-function -DPIC"
|
||||
;;
|
||||
x265)
|
||||
APP_FLAGS="-Wno-unused-function"
|
||||
;;
|
||||
@@ -723,15 +750,15 @@ download_gpl_library_source() {
|
||||
GPL_LIB_DEST_DIR="libvidstab"
|
||||
;;
|
||||
x264)
|
||||
GPL_LIB_URL="ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20180829-2245-stable.tar.bz2"
|
||||
GPL_LIB_FILE="x264-snapshot-20180829-2245-stable.tar.bz2"
|
||||
GPL_LIB_ORIG_DIR="x264-snapshot-20180829-2245-stable"
|
||||
GPL_LIB_URL="ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20181107-2245-stable.tar.bz2"
|
||||
GPL_LIB_FILE="x264-snapshot-20181107-2245-stable.tar.bz2"
|
||||
GPL_LIB_ORIG_DIR="x264-snapshot-20181107-2245-stable"
|
||||
GPL_LIB_DEST_DIR="x264"
|
||||
;;
|
||||
x265)
|
||||
GPL_LIB_URL="https://download.videolan.org/pub/videolan/x265/x265_2.8.tar.gz"
|
||||
GPL_LIB_FILE="x265-2.8.tar.gz"
|
||||
GPL_LIB_ORIG_DIR="x265_2.8"
|
||||
GPL_LIB_URL="https://download.videolan.org/pub/videolan/x265/x265_2.9.tar.gz"
|
||||
GPL_LIB_FILE="x265-2.9.tar.gz"
|
||||
GPL_LIB_ORIG_DIR="x265_2.9"
|
||||
GPL_LIB_DEST_DIR="x265"
|
||||
;;
|
||||
xvidcore)
|
||||
|
||||
+8
-3
@@ -295,6 +295,13 @@ do
|
||||
fi
|
||||
done
|
||||
|
||||
# BUILD SHARED (DEFAULT) OR STATIC LIBRARIES
|
||||
if [[ -z ${MOBILE_FFMPEG_STATIC} ]]; then
|
||||
BUILD_LIBRARY_OPTIONS="--enable-shared --disable-static";
|
||||
else
|
||||
BUILD_LIBRARY_OPTIONS="--enable-static --disable-shared";
|
||||
fi
|
||||
|
||||
# CFLAGS PARTS
|
||||
ARCH_CFLAGS=$(get_arch_specific_cflags);
|
||||
APP_CFLAGS=$(get_app_specific_cflags ${LIB_NAME});
|
||||
@@ -343,7 +350,7 @@ make distclean 2>/dev/null 1>/dev/null
|
||||
--enable-optimizations \
|
||||
--enable-small \
|
||||
--enable-swscale \
|
||||
--enable-shared \
|
||||
${BUILD_LIBRARY_OPTIONS} \
|
||||
--disable-openssl \
|
||||
--disable-xmm-clobber-test \
|
||||
--disable-debug \
|
||||
@@ -355,7 +362,6 @@ make distclean 2>/dev/null 1>/dev/null
|
||||
--disable-manpages \
|
||||
--disable-podpages \
|
||||
--disable-txtpages \
|
||||
--disable-static \
|
||||
--disable-sndio \
|
||||
--disable-schannel \
|
||||
--disable-sdl2 \
|
||||
@@ -420,7 +426,6 @@ cp -f ${BASEDIR}/src/ffmpeg/libavutil/arm/timer.h ${BASEDIR}/prebuilt/ios-$(get_
|
||||
cp -f ${BASEDIR}/src/ffmpeg/libavutil/aarch64/timer.h ${BASEDIR}/prebuilt/ios-$(get_target_host)/ffmpeg/include/libavutil/aarch64
|
||||
cp -f ${BASEDIR}/src/ffmpeg/libavutil/x86/emms.h ${BASEDIR}/prebuilt/ios-$(get_target_host)/ffmpeg/include/libavutil/x86
|
||||
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "ok"
|
||||
else
|
||||
|
||||
@@ -65,6 +65,6 @@ fi
|
||||
make ${MOBILE_FFMPEG_DEBUG} -j$(get_cpu_count) || exit 1
|
||||
|
||||
# CREATE PACKAGE CONFIG MANUALLY
|
||||
create_fontconfig_package_config "2.13.0"
|
||||
create_fontconfig_package_config "2.13.1"
|
||||
|
||||
make install || exit 1
|
||||
|
||||
@@ -35,6 +35,7 @@ set_toolchain_clang_paths ${LIB_NAME}
|
||||
# PREPARING FLAGS
|
||||
TARGET_HOST=$(get_target_host)
|
||||
export CFLAGS=$(get_cflags ${LIB_NAME})
|
||||
export CPPFLAGS=$(get_cflags ${LIB_NAME})
|
||||
export CXXFLAGS=$(get_cxxflags ${LIB_NAME})
|
||||
export LDFLAGS=$(get_ldflags ${LIB_NAME})
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ if [[ ${RECONF_libvorbis} -eq 1 ]]; then
|
||||
autoreconf_library ${LIB_NAME}
|
||||
fi
|
||||
|
||||
./configure \
|
||||
PKG_CONFIG= ./configure \
|
||||
--prefix=${BASEDIR}/prebuilt/ios-$(get_target_host)/${LIB_NAME} \
|
||||
--with-pic \
|
||||
--with-sysroot=${SDK_PATH} \
|
||||
|
||||
+2
-2
@@ -58,11 +58,11 @@ case ${ARCH} in
|
||||
;;
|
||||
i386)
|
||||
TARGET="x86-iphonesimulator-gcc"
|
||||
ASM_FLAGS="--enable-runtime-cpu-detect"
|
||||
ASM_FLAGS="--enable-runtime-cpu-detect --disable-avx512"
|
||||
;;
|
||||
x86-64)
|
||||
TARGET="x86_64-iphonesimulator-gcc"
|
||||
ASM_FLAGS="--enable-runtime-cpu-detect"
|
||||
ASM_FLAGS="--enable-runtime-cpu-detect --disable-avx512"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
@@ -42,6 +42,13 @@ export CXXFLAGS=$(get_cxxflags ${LIB_NAME})
|
||||
export LDFLAGS="${COMMON_LDFLAGS} -L${BASEDIR}/prebuilt/ios-$(get_target_host)/ffmpeg/lib -framework Foundation -lavdevice"
|
||||
export PKG_CONFIG_LIBDIR="${INSTALL_PKG_CONFIG_DIR}"
|
||||
|
||||
# BUILD SHARED (DEFAULT) OR STATIC LIBRARIES
|
||||
if [[ -z ${MOBILE_FFMPEG_STATIC} ]]; then
|
||||
BUILD_LIBRARY_OPTIONS="--enable-shared --disable-static";
|
||||
else
|
||||
BUILD_LIBRARY_OPTIONS="--enable-static --disable-shared";
|
||||
fi
|
||||
|
||||
cd ${BASEDIR}/ios || exit 1
|
||||
|
||||
echo -n -e "\n${LIB_NAME}: "
|
||||
@@ -63,8 +70,7 @@ ${SED_INLINE} 's/${wl}suppress//g' configure
|
||||
--prefix=${BASEDIR}/prebuilt/ios-$(get_target_host)/${LIB_NAME} \
|
||||
--with-pic \
|
||||
--with-sysroot=${SDK_PATH} \
|
||||
--enable-shared \
|
||||
--disable-static \
|
||||
${BUILD_LIBRARY_OPTIONS} \
|
||||
--disable-fast-install \
|
||||
--disable-maintainer-mode \
|
||||
--host=${TARGET_HOST} 1>>${BASEDIR}/build.log 2>&1
|
||||
|
||||
+9
-4
@@ -50,13 +50,13 @@ cd ${BASEDIR}/src/${LIB_NAME} || exit 1
|
||||
ASM_OPTIONS=""
|
||||
case ${ARCH} in
|
||||
armv7 | armv7s)
|
||||
ASM_OPTIONS="-DENABLE_ASSEMBLY=1 -DCROSS_COMPILE_ARM=1 -DSSE2_FOUND=0 -DSSE3_FOUND=0"
|
||||
ASM_OPTIONS="-DENABLE_ASSEMBLY=1 -DCROSS_COMPILE_ARM=1"
|
||||
;;
|
||||
arm64)
|
||||
ASM_OPTIONS="-DENABLE_ASSEMBLY=0 -DCROSS_COMPILE_ARM=1 -DSSE2_FOUND=0 -DSSE3_FOUND=0"
|
||||
ASM_OPTIONS="-DENABLE_ASSEMBLY=0 -DCROSS_COMPILE_ARM=1"
|
||||
;;
|
||||
*)
|
||||
ASM_OPTIONS="-DENABLE_ASSEMBLY=1 -DCROSS_COMPILE_ARM=0 -DSSE2_FOUND=1 -DSSE3_FOUND=1"
|
||||
ASM_OPTIONS="-DENABLE_ASSEMBLY=1 -DCROSS_COMPILE_ARM=0"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -67,12 +67,17 @@ fi
|
||||
mkdir cmake-build || exit 1
|
||||
cd cmake-build || exit 1
|
||||
|
||||
# apply detect512 patch
|
||||
rc=$(download "https://bitbucket.org/multicoreware/x265/issues/attachments/442/multicoreware/x265/1539002893.24/442/enable512.diff" "enable512.diff")
|
||||
cd ${BASEDIR}/src/${LIB_NAME}/source/common
|
||||
patch -p3 < ${MOBILE_FFMPEG_TMPDIR}/enable512.diff
|
||||
cd ${BASEDIR}/src/${LIB_NAME}/cmake-build
|
||||
|
||||
# fix x86 and x86_64 assembly
|
||||
${SED_INLINE} 's/win64/macho64 -DPREFIX/g' ${BASEDIR}/src/x265/source/cmake/CMakeASM_NASMInformation.cmake
|
||||
${SED_INLINE} 's/win/macho/g' ${BASEDIR}/src/x265/source/cmake/CMakeASM_NASMInformation.cmake
|
||||
|
||||
# fix pointer array assignments
|
||||
${SED_INLINE} 's/parseCpuName(value, bError)/parseCpuName(value, bError, 0)/g' ${BASEDIR}/src/x265/source/common/param.cpp
|
||||
${SED_INLINE} '/addAvg/s/ p.pu/ *p.pu/g' ${BASEDIR}/src/x265/source/common/arm/asm-primitives.cpp
|
||||
${SED_INLINE} '/convert_p2s/s/ p.pu/ *p.pu/g' ${BASEDIR}/src/x265/source/common/arm/asm-primitives.cpp
|
||||
${SED_INLINE} '/pixelavg_pp/s/ p.pu/ *p.pu/g' ${BASEDIR}/src/x265/source/common/arm/asm-primitives.cpp
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -94,7 +94,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -90,7 +90,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -352,7 +352,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -483,7 +483,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -103,7 +103,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -260,7 +260,7 @@ Variables</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">static</span> <span class="keywordtype">char</span> *choose_ ## suffix (<a class="code" href="../../d0/d0f/struct_output_filter.html">OutputFilter</a> *ofilter) \</div><div class="line">{ \</div><div class="line"> if (ofilter->var != none) { \</div><div class="line"> get_name(ofilter->var); \</div><div class="line"> return av_strdup(name); \</div><div class="line"> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ofilter->supported_list) { \</div><div class="line"> const <a class="code" href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">type</a> *p; \</div><div class="line"> AVIOContext *s = NULL; \</div><div class="line"> uint8_t *ret; \</div><div class="line"> int len; \</div><div class="line"> \</div><div class="line"> if (avio_open_dyn_buf(&s) < 0) \</div><div class="line"> exit_program(1); \</div><div class="line"> \</div><div class="line"> for (p = ofilter->supported_list; *p != none; p++) { \</div><div class="line"> get_name(*p); \</div><div class="line"> avio_printf(s, <span class="stringliteral">"%s|"</span>, name); \</div><div class="line"> } \</div><div class="line"> len = avio_close_dyn_buf(s, &ret); \</div><div class="line"> ret[len - 1] = 0; \</div><div class="line"> return ret; \</div><div class="line"> } else \</div><div class="line"> return NULL; \</div><div class="line">}</div><div class="ttc" id="struct_callback_data_html_a24877dd94bec8b5bad7a0ed6893f7c28"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">CallbackData::type</a></div><div class="ttdeci">int type</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00034">mobileffmpeg_config.c:34</a></div></div>
|
||||
<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">static</span> <span class="keywordtype">char</span> *choose_ ## suffix (<a class="code" href="../../d0/d0f/struct_output_filter.html">OutputFilter</a> *ofilter) \</div><div class="line">{ \</div><div class="line"> if (ofilter->var != none) { \</div><div class="line"> get_name(ofilter->var); \</div><div class="line"> return av_strdup(name); \</div><div class="line"> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ofilter->supported_list) { \</div><div class="line"> const <a class="code" href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">type</a> *p; \</div><div class="line"> AVIOContext *s = NULL; \</div><div class="line"> uint8_t *ret; \</div><div class="line"> int len; \</div><div class="line"> \</div><div class="line"> if (avio_open_dyn_buf(&s) < 0) \</div><div class="line"> exit_program(1); \</div><div class="line"> \</div><div class="line"> for (p = ofilter->supported_list; *p != none; p++) { \</div><div class="line"> get_name(*p); \</div><div class="line"> avio_printf(s, <span class="stringliteral">"%s|"</span>, name); \</div><div class="line"> } \</div><div class="line"> len = avio_close_dyn_buf(s, &ret); \</div><div class="line"> ret[len - 1] = 0; \</div><div class="line"> return ret; \</div><div class="line"> } else \</div><div class="line"> return NULL; \</div><div class="line">}</div><div class="ttc" id="struct_callback_data_html_a24877dd94bec8b5bad7a0ed6893f7c28"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">CallbackData::type</a></div><div class="ttdeci">int type</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00038">mobileffmpeg.c:38</a></div></div>
|
||||
<div class="ttc" id="struct_output_filter_html"><div class="ttname"><a href="../../d0/d0f/struct_output_filter.html">OutputFilter</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00271">fftools_ffmpeg.h:271</a></div></div>
|
||||
</div><!-- fragment -->
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00166">166</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
@@ -1214,7 +1214,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -207,7 +207,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -204,7 +204,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -97,7 +97,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -70,7 +70,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -97,7 +97,7 @@ Data Fields</h2></td></tr>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>Callback data structure </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00033">33</a> of file <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html">mobileffmpeg_config.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00037">37</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
</div><h2 class="groupheader">Field Documentation</h2>
|
||||
<a id="a4b19ae27c39f882eae94d6dcbfd36d01"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4b19ae27c39f882eae94d6dcbfd36d01">◆ </a></span>logData</h2>
|
||||
@@ -111,7 +111,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00037">37</a> of file <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html">mobileffmpeg_config.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00041">41</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -127,7 +127,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00036">36</a> of file <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html">mobileffmpeg_config.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00040">40</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -143,7 +143,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00047">47</a> of file <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html">mobileffmpeg_config.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00051">51</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -159,7 +159,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00044">44</a> of file <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html">mobileffmpeg_config.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00048">48</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -175,7 +175,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00040">40</a> of file <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html">mobileffmpeg_config.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00044">44</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -191,7 +191,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00039">39</a> of file <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html">mobileffmpeg_config.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00043">43</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -207,7 +207,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00041">41</a> of file <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html">mobileffmpeg_config.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00045">45</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -223,7 +223,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00042">42</a> of file <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html">mobileffmpeg_config.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00046">46</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -239,7 +239,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00045">45</a> of file <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html">mobileffmpeg_config.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00049">49</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -255,7 +255,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00043">43</a> of file <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html">mobileffmpeg_config.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00047">47</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -271,17 +271,17 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00034">34</a> of file <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html">mobileffmpeg_config.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00038">38</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this struct was generated from the following file:<ul>
|
||||
<li><a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html">mobileffmpeg_config.c</a></li>
|
||||
<li><a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -137,7 +137,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1066,7 +1066,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -257,7 +257,7 @@ Functions</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -71,7 +71,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -197,7 +197,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -172,7 +172,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -244,7 +244,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -352,7 +352,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -3871,7 +3871,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -438,7 +438,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -137,7 +137,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -2207,7 +2207,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -521,7 +521,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -389,7 +389,7 @@ Variables</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">if</span> (codec->field) { \</div><div class="line"> const <a class="code" href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">type</a> *p = codec->field; \</div><div class="line"> \</div><div class="line"> printf(<span class="stringliteral">" Supported "</span> list_name <span class="stringliteral">":"</span>); \</div><div class="line"> while (*p != term) { \</div><div class="line"> get_name(*p); \</div><div class="line"> printf(<span class="stringliteral">" %s"</span>, name); \</div><div class="line"> p++; \</div><div class="line"> } \</div><div class="line"> printf(<span class="stringliteral">"\n"</span>); \</div><div class="line"> } \</div><div class="ttc" id="struct_callback_data_html_a24877dd94bec8b5bad7a0ed6893f7c28"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">CallbackData::type</a></div><div class="ttdeci">int type</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00034">mobileffmpeg_config.c:34</a></div></div>
|
||||
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">if</span> (codec->field) { \</div><div class="line"> const <a class="code" href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">type</a> *p = codec->field; \</div><div class="line"> \</div><div class="line"> printf(<span class="stringliteral">" Supported "</span> list_name <span class="stringliteral">":"</span>); \</div><div class="line"> while (*p != term) { \</div><div class="line"> get_name(*p); \</div><div class="line"> printf(<span class="stringliteral">" %s"</span>, name); \</div><div class="line"> p++; \</div><div class="line"> } \</div><div class="line"> printf(<span class="stringliteral">"\n"</span>); \</div><div class="line"> } \</div><div class="ttc" id="struct_callback_data_html_a24877dd94bec8b5bad7a0ed6893f7c28"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">CallbackData::type</a></div><div class="ttdeci">int type</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00038">mobileffmpeg.c:38</a></div></div>
|
||||
</div><!-- fragment -->
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/dcc/fftools__cmdutils_8c_source.html#l01378">1378</a> of file <a class="el" href="../../d7/dcc/fftools__cmdutils_8c_source.html">fftools_cmdutils.c</a>.</p>
|
||||
|
||||
@@ -1412,7 +1412,7 @@ Variables</h2></td></tr>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00336">336</a> of file <a class="el" href="../../d9/dae/mobileffmpeg__config_8c_source.html">mobileffmpeg_config.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00351">351</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -3678,7 +3678,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -78,7 +78,7 @@ $(function() {
|
||||
<div class="ttc" id="fftools__cmdutils_8h_html_ac6310b4c2290bc63f127bcd3faa117e6"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#ac6310b4c2290bc63f127bcd3faa117e6">OPT_EXIT</a></div><div class="ttdeci">#define OPT_EXIT</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00182">fftools_cmdutils.h:182</a></div></div>
|
||||
<div class="ttc" id="fftools__cmdutils_8c_html_a4c35b5b42d01e850824bc0af1016e71f"><div class="ttname"><a href="../../d7/dcc/fftools__cmdutils_8c.html#a4c35b5b42d01e850824bc0af1016e71f">show_muxers</a></div><div class="ttdeci">int show_muxers(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l01363">fftools_cmdutils.c:1363</a></div></div>
|
||||
<div class="ttc" id="fftools__cmdutils_8c_html_a6dbb327ec24eebea72ba8769c68024b3"><div class="ttname"><a href="../../d7/dcc/fftools__cmdutils_8c.html#a6dbb327ec24eebea72ba8769c68024b3">PRINT_LIB_INFO</a></div><div class="ttdeci">#define PRINT_LIB_INFO(libname, LIBNAME, flags, level)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l01106">fftools_cmdutils.c:1106</a></div></div>
|
||||
<div class="ttc" id="fftools__cmdutils_8c_html_a2a0b0c8c4f0496cd0ed87e183a0a493d"><div class="ttname"><a href="../../d7/dcc/fftools__cmdutils_8c.html#a2a0b0c8c4f0496cd0ed87e183a0a493d">mobileffmpeg_log_callback_function</a></div><div class="ttdeci">void mobileffmpeg_log_callback_function(void *ptr, int level, const char *format, va_list vargs)</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00336">mobileffmpeg_config.c:336</a></div></div>
|
||||
<div class="ttc" id="fftools__cmdutils_8c_html_a2a0b0c8c4f0496cd0ed87e183a0a493d"><div class="ttname"><a href="../../d7/dcc/fftools__cmdutils_8c.html#a2a0b0c8c4f0496cd0ed87e183a0a493d">mobileffmpeg_log_callback_function</a></div><div class="ttdeci">void mobileffmpeg_log_callback_function(void *ptr, int level, const char *format, va_list vargs)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00351">mobileffmpeg.c:351</a></div></div>
|
||||
<div class="ttc" id="fftools__cmdutils_8c_html_a77359635accb87859b14d66b53002138"><div class="ttname"><a href="../../d7/dcc/fftools__cmdutils_8c.html#a77359635accb87859b14d66b53002138">GET_ARG</a></div><div class="ttdeci">#define GET_ARG(arg)</div></div>
|
||||
<div class="ttc" id="fftools__cmdutils_8c_html_a32ce6570506a3665692064967411b000"><div class="ttname"><a href="../../d7/dcc/fftools__cmdutils_8c.html#a32ce6570506a3665692064967411b000">next_codec_for_id</a></div><div class="ttdeci">static const AVCodec * next_codec_for_id(enum AVCodecID id, const AVCodec *prev, int encoder)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l01481">fftools_cmdutils.c:1481</a></div></div>
|
||||
<div class="ttc" id="fftools__cmdutils_8h_html"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html">fftools_cmdutils.h</a></div></div>
|
||||
@@ -238,7 +238,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -74,8 +74,6 @@ $(function() {
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
|
||||
Macros</h2></td></tr>
|
||||
<tr class="memitem:ab40bb25ef4ec0f35c70e84dbad36cfc2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d0c/mobileffmpeg__config_8h.html#ab40bb25ef4ec0f35c70e84dbad36cfc2">MOBILE_FFMPEG_VERSION</a>   "2.1"</td></tr>
|
||||
<tr class="separator:ab40bb25ef4ec0f35c70e84dbad36cfc2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a6e43beaa714b1bf01ce2271440786e38"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d0c/mobileffmpeg__config_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>   "mobile-ffmpeg"</td></tr>
|
||||
<tr class="separator:a6e43beaa714b1bf01ce2271440786e38"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab78bd305488c62caf8515ee765b1ed49"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d0c/mobileffmpeg__config_8h.html#ab78bd305488c62caf8515ee765b1ed49">LOGV</a>(...)   __android_log_print(ANDROID_LOG_VERBOSE, <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>, __VA_ARGS__)</td></tr>
|
||||
@@ -114,7 +112,7 @@ Functions</h2></td></tr>
|
||||
</div><div class="memdoc">
|
||||
<p>Defines tag used for Android logging. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html#l00033">33</a> of file <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html">mobileffmpeg_config.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html#l00031">31</a> of file <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html">mobileffmpeg_config.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -135,7 +133,7 @@ Functions</h2></td></tr>
|
||||
</div><div class="memdoc">
|
||||
<p>Debug Android logging macro. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html#l00039">39</a> of file <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html">mobileffmpeg_config.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html#l00037">37</a> of file <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html">mobileffmpeg_config.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -156,7 +154,7 @@ Functions</h2></td></tr>
|
||||
</div><div class="memdoc">
|
||||
<p>Error Android logging macro. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html#l00048">48</a> of file <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html">mobileffmpeg_config.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html#l00046">46</a> of file <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html">mobileffmpeg_config.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -177,7 +175,7 @@ Functions</h2></td></tr>
|
||||
</div><div class="memdoc">
|
||||
<p>Info Android logging macro. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html#l00042">42</a> of file <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html">mobileffmpeg_config.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html#l00040">40</a> of file <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html">mobileffmpeg_config.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -198,7 +196,7 @@ Functions</h2></td></tr>
|
||||
</div><div class="memdoc">
|
||||
<p>Verbose Android logging macro. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html#l00036">36</a> of file <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html">mobileffmpeg_config.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html#l00034">34</a> of file <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html">mobileffmpeg_config.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -219,24 +217,7 @@ Functions</h2></td></tr>
|
||||
</div><div class="memdoc">
|
||||
<p>Warn Android logging macro. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html#l00045">45</a> of file <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html">mobileffmpeg_config.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab40bb25ef4ec0f35c70e84dbad36cfc2"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab40bb25ef4ec0f35c70e84dbad36cfc2">◆ </a></span>MOBILE_FFMPEG_VERSION</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define MOBILE_FFMPEG_VERSION   "2.1"</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Library version string </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html#l00030">30</a> of file <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html">mobileffmpeg_config.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html#l00043">43</a> of file <a class="el" href="../../d8/d0c/mobileffmpeg__config_8h_source.html">mobileffmpeg_config.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -403,7 +384,7 @@ Functions</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Tue Sep 11 2018 12:10:36 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -3031,7 +3031,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -185,7 +185,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -388,7 +388,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -63,6 +63,7 @@ $(function() {
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#define-members">Macros</a> |
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">mobileffmpeg.h File Reference</div> </div>
|
||||
@@ -71,26 +72,191 @@ $(function() {
|
||||
|
||||
<p><a href="../../d8/da5/mobileffmpeg_8h_source.html">Go to the source code of this file.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
|
||||
Macros</h2></td></tr>
|
||||
<tr class="memitem:ab40bb25ef4ec0f35c70e84dbad36cfc2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#ab40bb25ef4ec0f35c70e84dbad36cfc2">MOBILE_FFMPEG_VERSION</a>   "2.2"</td></tr>
|
||||
<tr class="separator:ab40bb25ef4ec0f35c70e84dbad36cfc2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a6e43beaa714b1bf01ce2271440786e38"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>   "mobile-ffmpeg"</td></tr>
|
||||
<tr class="separator:a6e43beaa714b1bf01ce2271440786e38"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab78bd305488c62caf8515ee765b1ed49"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#ab78bd305488c62caf8515ee765b1ed49">LOGV</a>(...)   __android_log_print(ANDROID_LOG_VERBOSE, <a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>, __VA_ARGS__)</td></tr>
|
||||
<tr class="separator:ab78bd305488c62caf8515ee765b1ed49"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aa839997a58e14061861cd634fdb7664d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#aa839997a58e14061861cd634fdb7664d">LOGD</a>(...)   __android_log_print(ANDROID_LOG_DEBUG, <a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>, __VA_ARGS__)</td></tr>
|
||||
<tr class="separator:aa839997a58e14061861cd634fdb7664d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a5512e59d578a380a441a70256af997d0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a5512e59d578a380a441a70256af997d0">LOGI</a>(...)   __android_log_print(ANDROID_LOG_INFO, <a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>, __VA_ARGS__)</td></tr>
|
||||
<tr class="separator:a5512e59d578a380a441a70256af997d0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a07f1b0d507acedeb7550353eba4f6e66"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a07f1b0d507acedeb7550353eba4f6e66">LOGW</a>(...)   __android_log_print(ANDROID_LOG_WARN, <a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>, __VA_ARGS__)</td></tr>
|
||||
<tr class="separator:a07f1b0d507acedeb7550353eba4f6e66"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae02538a80ad5fc009caec73487d11a8d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#ae02538a80ad5fc009caec73487d11a8d">LOGE</a>(...)   __android_log_print(ANDROID_LOG_ERROR, <a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>, __VA_ARGS__)</td></tr>
|
||||
<tr class="separator:ae02538a80ad5fc009caec73487d11a8d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:a59646e68c5d2e14938e2165ab3c6b151"><td class="memItemLeft" align="right" valign="top">JNIEXPORT jstring JNICALL </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a59646e68c5d2e14938e2165ab3c6b151">Java_com_arthenica_mobileffmpeg_FFmpeg_getFFmpegVersion</a> (JNIEnv *, jclass)</td></tr>
|
||||
<tr class="separator:a59646e68c5d2e14938e2165ab3c6b151"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab25e0b810545b8ec5219ed72a72c9db3"><td class="memItemLeft" align="right" valign="top">JNIEXPORT jstring JNICALL </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#ab25e0b810545b8ec5219ed72a72c9db3">Java_com_arthenica_mobileffmpeg_FFmpeg_getVersion</a> (JNIEnv *, jclass)</td></tr>
|
||||
<tr class="separator:ab25e0b810545b8ec5219ed72a72c9db3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aac3b08be4d7283e7386378f981dc127c"><td class="memItemLeft" align="right" valign="top">JNIEXPORT jint JNICALL </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#aac3b08be4d7283e7386378f981dc127c">Java_com_arthenica_mobileffmpeg_FFmpeg_execute</a> (JNIEnv *, jclass, jobjectArray)</td></tr>
|
||||
<tr class="separator:aac3b08be4d7283e7386378f981dc127c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a68cdbe727bd7de847995a93f0c47ddda"><td class="memItemLeft" align="right" valign="top">JNIEXPORT void JNICALL </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a68cdbe727bd7de847995a93f0c47ddda">Java_com_arthenica_mobileffmpeg_FFmpeg_cancel</a> (JNIEnv *, jclass)</td></tr>
|
||||
<tr class="separator:a68cdbe727bd7de847995a93f0c47ddda"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae50207e607b00d2da3284bfb3073b81d"><td class="memItemLeft" align="right" valign="top">JNIEXPORT void JNICALL </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#ae50207e607b00d2da3284bfb3073b81d">Java_com_arthenica_mobileffmpeg_Config_enableNativeRedirection</a> (JNIEnv *, jclass)</td></tr>
|
||||
<tr class="separator:ae50207e607b00d2da3284bfb3073b81d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab10bd6b77ae73fe22daa7596a5fd0265"><td class="memItemLeft" align="right" valign="top">JNIEXPORT void JNICALL </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#ab10bd6b77ae73fe22daa7596a5fd0265">Java_com_arthenica_mobileffmpeg_Config_disableNativeRedirection</a> (JNIEnv *, jclass)</td></tr>
|
||||
<tr class="separator:ab10bd6b77ae73fe22daa7596a5fd0265"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a231daf6b3157f2c276a158c7e4b53d3e"><td class="memItemLeft" align="right" valign="top">JNIEXPORT void JNICALL </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a231daf6b3157f2c276a158c7e4b53d3e">Java_com_arthenica_mobileffmpeg_Config_setNativeLogLevel</a> (JNIEnv *, jclass, jint)</td></tr>
|
||||
<tr class="separator:a231daf6b3157f2c276a158c7e4b53d3e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a54e490bc15eb2ad76f6439c2b793ddf0"><td class="memItemLeft" align="right" valign="top">JNIEXPORT jint JNICALL </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a54e490bc15eb2ad76f6439c2b793ddf0">Java_com_arthenica_mobileffmpeg_Config_getNativeLogLevel</a> (JNIEnv *, jclass)</td></tr>
|
||||
<tr class="separator:a54e490bc15eb2ad76f6439c2b793ddf0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0250425604569423e8b3398dec588c87"><td class="memItemLeft" align="right" valign="top">JNIEXPORT jstring JNICALL </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a0250425604569423e8b3398dec588c87">Java_com_arthenica_mobileffmpeg_Config_getNativeFFmpegVersion</a> (JNIEnv *, jclass)</td></tr>
|
||||
<tr class="separator:a0250425604569423e8b3398dec588c87"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a6bd5582bfd016c6af95c2cfe8a9f1cec"><td class="memItemLeft" align="right" valign="top">JNIEXPORT jstring JNICALL </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a6bd5582bfd016c6af95c2cfe8a9f1cec">Java_com_arthenica_mobileffmpeg_Config_getNativeVersion</a> (JNIEnv *, jclass)</td></tr>
|
||||
<tr class="separator:a6bd5582bfd016c6af95c2cfe8a9f1cec"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a44b5cc5aca302ad683b6a88974157d1f"><td class="memItemLeft" align="right" valign="top">JNIEXPORT jint JNICALL </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a44b5cc5aca302ad683b6a88974157d1f">Java_com_arthenica_mobileffmpeg_Config_nativeExecute</a> (JNIEnv *, jclass, jobjectArray)</td></tr>
|
||||
<tr class="separator:a44b5cc5aca302ad683b6a88974157d1f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a9be298ab41d2b4192bd2caee9e5c7b4f"><td class="memItemLeft" align="right" valign="top">JNIEXPORT void JNICALL </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a9be298ab41d2b4192bd2caee9e5c7b4f">Java_com_arthenica_mobileffmpeg_Config_nativeCancel</a> (JNIEnv *, jclass)</td></tr>
|
||||
<tr class="separator:a9be298ab41d2b4192bd2caee9e5c7b4f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<h2 class="groupheader">Function Documentation</h2>
|
||||
<a id="a68cdbe727bd7de847995a93f0c47ddda"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a68cdbe727bd7de847995a93f0c47ddda">◆ </a></span>Java_com_arthenica_mobileffmpeg_FFmpeg_cancel()</h2>
|
||||
<h2 class="groupheader">Macro Definition Documentation</h2>
|
||||
<a id="a6e43beaa714b1bf01ce2271440786e38"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6e43beaa714b1bf01ce2271440786e38">◆ </a></span>LIB_NAME</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_FFmpeg_cancel </td>
|
||||
<td class="memname">#define LIB_NAME   "mobile-ffmpeg"</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Defines tag used for Android logging. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/da5/mobileffmpeg_8h_source.html#l00033">33</a> of file <a class="el" href="../../d8/da5/mobileffmpeg_8h_source.html">mobileffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa839997a58e14061861cd634fdb7664d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa839997a58e14061861cd634fdb7664d">◆ </a></span>LOGD</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define LOGD</td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>...</em></td><td>)</td>
|
||||
<td>   __android_log_print(ANDROID_LOG_DEBUG, <a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>, __VA_ARGS__)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Debug Android logging macro. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/da5/mobileffmpeg_8h_source.html#l00039">39</a> of file <a class="el" href="../../d8/da5/mobileffmpeg_8h_source.html">mobileffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae02538a80ad5fc009caec73487d11a8d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae02538a80ad5fc009caec73487d11a8d">◆ </a></span>LOGE</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define LOGE</td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>...</em></td><td>)</td>
|
||||
<td>   __android_log_print(ANDROID_LOG_ERROR, <a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>, __VA_ARGS__)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Error Android logging macro. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/da5/mobileffmpeg_8h_source.html#l00048">48</a> of file <a class="el" href="../../d8/da5/mobileffmpeg_8h_source.html">mobileffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a5512e59d578a380a441a70256af997d0"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5512e59d578a380a441a70256af997d0">◆ </a></span>LOGI</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define LOGI</td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>...</em></td><td>)</td>
|
||||
<td>   __android_log_print(ANDROID_LOG_INFO, <a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>, __VA_ARGS__)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Info Android logging macro. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/da5/mobileffmpeg_8h_source.html#l00042">42</a> of file <a class="el" href="../../d8/da5/mobileffmpeg_8h_source.html">mobileffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab78bd305488c62caf8515ee765b1ed49"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab78bd305488c62caf8515ee765b1ed49">◆ </a></span>LOGV</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define LOGV</td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>...</em></td><td>)</td>
|
||||
<td>   __android_log_print(ANDROID_LOG_VERBOSE, <a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>, __VA_ARGS__)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Verbose Android logging macro. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/da5/mobileffmpeg_8h_source.html#l00036">36</a> of file <a class="el" href="../../d8/da5/mobileffmpeg_8h_source.html">mobileffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a07f1b0d507acedeb7550353eba4f6e66"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a07f1b0d507acedeb7550353eba4f6e66">◆ </a></span>LOGW</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define LOGW</td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>...</em></td><td>)</td>
|
||||
<td>   __android_log_print(ANDROID_LOG_WARN, <a class="el" href="../../d8/da5/mobileffmpeg_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>, __VA_ARGS__)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Warn Android logging macro. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/da5/mobileffmpeg_8h_source.html#l00045">45</a> of file <a class="el" href="../../d8/da5/mobileffmpeg_8h_source.html">mobileffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab40bb25ef4ec0f35c70e84dbad36cfc2"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab40bb25ef4ec0f35c70e84dbad36cfc2">◆ </a></span>MOBILE_FFMPEG_VERSION</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">#define MOBILE_FFMPEG_VERSION   "2.2"</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Library version string </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/da5/mobileffmpeg_8h_source.html#l00030">30</a> of file <a class="el" href="../../d8/da5/mobileffmpeg_8h_source.html">mobileffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Function Documentation</h2>
|
||||
<a id="ab10bd6b77ae73fe22daa7596a5fd0265"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab10bd6b77ae73fe22daa7596a5fd0265">◆ </a></span>Java_com_arthenica_mobileffmpeg_Config_disableNativeRedirection()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_disableNativeRedirection </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">JNIEnv * </td>
|
||||
<td class="paramname"><em>env</em>, </td>
|
||||
@@ -108,7 +274,199 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Cancels an ongoing operation.</p>
|
||||
<p>Disables log and statistics redirection.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">env</td><td>pointer to native method interface </td></tr>
|
||||
<tr><td class="paramname">reference</td><td>to the class on which this method is invoked </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00569">569</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae50207e607b00d2da3284bfb3073b81d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae50207e607b00d2da3284bfb3073b81d">◆ </a></span>Java_com_arthenica_mobileffmpeg_Config_enableNativeRedirection()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_enableNativeRedirection </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">JNIEnv * </td>
|
||||
<td class="paramname"><em>env</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">jclass </td>
|
||||
<td class="paramname"><em>object</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Enables log and statistics redirection.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">env</td><td>pointer to native method interface </td></tr>
|
||||
<tr><td class="paramname">reference</td><td>to the class on which this method is invoked </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00542">542</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0250425604569423e8b3398dec588c87"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0250425604569423e8b3398dec588c87">◆ </a></span>Java_com_arthenica_mobileffmpeg_Config_getNativeFFmpegVersion()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">JNIEXPORT jstring JNICALL Java_com_arthenica_mobileffmpeg_Config_getNativeFFmpegVersion </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">JNIEnv * </td>
|
||||
<td class="paramname"><em>env</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">jclass </td>
|
||||
<td class="paramname"><em>object</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Returns FFmpeg version bundled within the library natively.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">env</td><td>pointer to native method interface </td></tr>
|
||||
<tr><td class="paramname">object</td><td>reference to the class on which this method is invoked </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>FFmpeg version string </dd></dl>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00594">594</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a54e490bc15eb2ad76f6439c2b793ddf0"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a54e490bc15eb2ad76f6439c2b793ddf0">◆ </a></span>Java_com_arthenica_mobileffmpeg_Config_getNativeLogLevel()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">JNIEXPORT jint JNICALL Java_com_arthenica_mobileffmpeg_Config_getNativeLogLevel </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">JNIEnv * </td>
|
||||
<td class="paramname"><em>env</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">jclass </td>
|
||||
<td class="paramname"><em>object</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Returns current log level.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">env</td><td>pointer to native method interface </td></tr>
|
||||
<tr><td class="paramname">reference</td><td>to the class on which this method is invoked </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00532">532</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a6bd5582bfd016c6af95c2cfe8a9f1cec"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6bd5582bfd016c6af95c2cfe8a9f1cec">◆ </a></span>Java_com_arthenica_mobileffmpeg_Config_getNativeVersion()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">JNIEXPORT jstring JNICALL Java_com_arthenica_mobileffmpeg_Config_getNativeVersion </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">JNIEnv * </td>
|
||||
<td class="paramname"><em>env</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">jclass </td>
|
||||
<td class="paramname"><em>object</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Returns MobileFFmpeg library version natively.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">env</td><td>pointer to native method interface </td></tr>
|
||||
<tr><td class="paramname">object</td><td>reference to the class on which this method is invoked </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>MobileFFmpeg version string </dd></dl>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00605">605</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9be298ab41d2b4192bd2caee9e5c7b4f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9be298ab41d2b4192bd2caee9e5c7b4f">◆ </a></span>Java_com_arthenica_mobileffmpeg_Config_nativeCancel()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_nativeCancel </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">JNIEnv * </td>
|
||||
<td class="paramname"><em>env</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">jclass </td>
|
||||
<td class="paramname"><em>object</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Cancels an ongoing operation natively.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">env</td><td>pointer to native method interface </td></tr>
|
||||
@@ -117,18 +475,18 @@ Functions</h2></td></tr>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00150">150</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00670">670</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aac3b08be4d7283e7386378f981dc127c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aac3b08be4d7283e7386378f981dc127c">◆ </a></span>Java_com_arthenica_mobileffmpeg_FFmpeg_execute()</h2>
|
||||
<a id="a44b5cc5aca302ad683b6a88974157d1f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a44b5cc5aca302ad683b6a88974157d1f">◆ </a></span>Java_com_arthenica_mobileffmpeg_Config_nativeExecute()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">JNIEXPORT jint JNICALL Java_com_arthenica_mobileffmpeg_FFmpeg_execute </td>
|
||||
<td class="memname">JNIEXPORT jint JNICALL Java_com_arthenica_mobileffmpeg_Config_nativeExecute </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">JNIEnv * </td>
|
||||
<td class="paramname"><em>env</em>, </td>
|
||||
@@ -152,7 +510,7 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Synchronously executes FFmpeg command with arguments provided.</p>
|
||||
<p>Synchronously executes FFmpeg command natively with arguments provided.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">env</td><td>pointer to native method interface </td></tr>
|
||||
@@ -163,18 +521,18 @@ Functions</h2></td></tr>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>zero on successful execution, non-zero on error </dd></dl>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00097">97</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00617">617</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a59646e68c5d2e14938e2165ab3c6b151"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a59646e68c5d2e14938e2165ab3c6b151">◆ </a></span>Java_com_arthenica_mobileffmpeg_FFmpeg_getFFmpegVersion()</h2>
|
||||
<a id="a231daf6b3157f2c276a158c7e4b53d3e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a231daf6b3157f2c276a158c7e4b53d3e">◆ </a></span>Java_com_arthenica_mobileffmpeg_Config_setNativeLogLevel()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">JNIEXPORT jstring JNICALL Java_com_arthenica_mobileffmpeg_FFmpeg_getFFmpegVersion </td>
|
||||
<td class="memname">JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_setNativeLogLevel </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">JNIEnv * </td>
|
||||
<td class="paramname"><em>env</em>, </td>
|
||||
@@ -183,46 +541,13 @@ Functions</h2></td></tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">jclass </td>
|
||||
<td class="paramname"><em>object</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Returns FFmpeg version bundled within the library.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">env</td><td>pointer to native method interface </td></tr>
|
||||
<tr><td class="paramname">object</td><td>reference to the class on which this method is invoked </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>FFmpeg version string </dd></dl>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00074">74</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab25e0b810545b8ec5219ed72a72c9db3"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab25e0b810545b8ec5219ed72a72c9db3">◆ </a></span>Java_com_arthenica_mobileffmpeg_FFmpeg_getVersion()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">JNIEXPORT jstring JNICALL Java_com_arthenica_mobileffmpeg_FFmpeg_getVersion </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">JNIEnv * </td>
|
||||
<td class="paramname"><em>env</em>, </td>
|
||||
<td class="paramname"><em>object</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">jclass </td>
|
||||
<td class="paramname"><em>object</em> </td>
|
||||
<td class="paramtype">jint </td>
|
||||
<td class="paramname"><em>level</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
@@ -231,24 +556,24 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Returns MobileFFmpeg library version.</p>
|
||||
<p>Sets log level.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">env</td><td>pointer to native method interface </td></tr>
|
||||
<tr><td class="paramname">object</td><td>reference to the class on which this method is invoked </td></tr>
|
||||
<tr><td class="paramname">reference</td><td>to the class on which this method is invoked </td></tr>
|
||||
<tr><td class="paramname">log</td><td>level </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>MobileFFmpeg version string </dd></dl>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00085">85</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html#l00522">522</a> of file <a class="el" href="../../dd/d16/mobileffmpeg_8c_source.html">mobileffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1160,7 +1160,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Tue Sep 11 2018 12:10:36 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -226,7 +226,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -513,7 +513,7 @@ Variables</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">switch</span> (<a class="code" href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">type</a>) {\</div><div class="line"> case <span class="charliteral">'g'</span>:\</div><div class="line"> meta = &context->metadata;\</div><div class="line"> break;\</div><div class="line"> case <span class="charliteral">'c'</span>:\</div><div class="line"> METADATA_CHECK_INDEX(index, context->nb_chapters, <span class="stringliteral">"chapter"</span>)\</div><div class="line"> meta = &context->chapters[index]->metadata;\</div><div class="line"> break;\</div><div class="line"> case <span class="charliteral">'p'</span>:\</div><div class="line"> METADATA_CHECK_INDEX(index, context->nb_programs, <span class="stringliteral">"program"</span>)\</div><div class="line"> meta = &context->programs[index]->metadata;\</div><div class="line"> break;\</div><div class="line"> case <span class="charliteral">'s'</span>:\</div><div class="line"> break; <span class="comment">/* handled separately below */</span> \</div><div class="line"> default: av_assert0(0);\</div><div class="line"> }\</div><div class="ttc" id="struct_callback_data_html_a24877dd94bec8b5bad7a0ed6893f7c28"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">CallbackData::type</a></div><div class="ttdeci">int type</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/dae/mobileffmpeg__config_8c_source.html#l00034">mobileffmpeg_config.c:34</a></div></div>
|
||||
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">switch</span> (<a class="code" href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">type</a>) {\</div><div class="line"> case <span class="charliteral">'g'</span>:\</div><div class="line"> meta = &context->metadata;\</div><div class="line"> break;\</div><div class="line"> case <span class="charliteral">'c'</span>:\</div><div class="line"> METADATA_CHECK_INDEX(index, context->nb_chapters, <span class="stringliteral">"chapter"</span>)\</div><div class="line"> meta = &context->chapters[index]->metadata;\</div><div class="line"> break;\</div><div class="line"> case <span class="charliteral">'p'</span>:\</div><div class="line"> METADATA_CHECK_INDEX(index, context->nb_programs, <span class="stringliteral">"program"</span>)\</div><div class="line"> meta = &context->programs[index]->metadata;\</div><div class="line"> break;\</div><div class="line"> case <span class="charliteral">'s'</span>:\</div><div class="line"> break; <span class="comment">/* handled separately below */</span> \</div><div class="line"> default: av_assert0(0);\</div><div class="line"> }\</div><div class="ttc" id="struct_callback_data_html_a24877dd94bec8b5bad7a0ed6893f7c28"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">CallbackData::type</a></div><div class="ttdeci">int type</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00038">mobileffmpeg.c:38</a></div></div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
@@ -4086,7 +4086,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -473,7 +473,7 @@ $(function() {
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:07 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -190,7 +190,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -154,7 +154,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -139,7 +139,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1312,7 +1312,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -226,7 +226,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -226,7 +226,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -136,7 +136,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -232,7 +232,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -154,7 +154,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -2296,7 +2296,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -79,15 +79,13 @@ $(function() {
|
||||
<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="d8/da5/mobileffmpeg_8h_source.html"><span class="icondoc"></span></a><a class="el" href="d8/da5/mobileffmpeg_8h.html" target="_self">mobileffmpeg.h</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="d2/d3f/mobileffmpeg__abidetect_8c_source.html"><span class="icondoc"></span></a><a class="el" href="d2/d3f/mobileffmpeg__abidetect_8c.html" target="_self">mobileffmpeg_abidetect.c</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="d3/db9/mobileffmpeg__abidetect_8h_source.html"><span class="icondoc"></span></a><a class="el" href="d3/db9/mobileffmpeg__abidetect_8h.html" target="_self">mobileffmpeg_abidetect.h</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="d9/dae/mobileffmpeg__config_8c_source.html"><span class="icondoc"></span></a><a class="el" href="d9/dae/mobileffmpeg__config_8c.html" target="_self">mobileffmpeg_config.c</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="d8/d0c/mobileffmpeg__config_8h_source.html"><span class="icondoc"></span></a><a class="el" href="d8/d0c/mobileffmpeg__config_8h.html" target="_self">mobileffmpeg_config.h</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="d2/d70/mobileffmpeg__exception_8h_source.html"><span class="icondoc"></span></a><a class="el" href="d2/d70/mobileffmpeg__exception_8h.html" target="_self">mobileffmpeg_exception.h</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="d2/d70/mobileffmpeg__exception_8h_source.html"><span class="icondoc"></span></a><a class="el" href="d2/d70/mobileffmpeg__exception_8h.html" target="_self">mobileffmpeg_exception.h</a></td><td class="desc"></td></tr>
|
||||
</table>
|
||||
</div><!-- directory -->
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -114,7 +114,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -78,7 +78,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -118,7 +118,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -126,7 +126,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -102,7 +102,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -195,7 +195,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -98,7 +98,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -126,7 +126,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -113,7 +113,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -75,7 +75,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -110,7 +110,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -110,7 +110,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -263,7 +263,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -97,7 +97,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -96,7 +96,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -75,7 +75,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -104,7 +104,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -197,7 +197,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -96,7 +96,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -82,7 +82,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -75,7 +75,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -114,7 +114,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -78,7 +78,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -118,7 +118,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">MobileFFmpeg Android API
|
||||
 <span id="projectnumber">2.1</span>
|
||||
 <span id="projectnumber">2.2</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -126,7 +126,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Wed Sep 5 2018 00:38:08 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Nov 8 2018 23:19:14 for MobileFFmpeg Android API by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.14
|
||||
</small></address>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user