Files
mobile-ffmpeg/docs/android/doc/html/dd/d16/mobileffmpeg_8c_source.html
Taner Şenerandalexcohn 4f6e484d5b merge v4.4 to master (#503)
* cleanup openh264 build

* apply 'use build host and target host in build scripts' efe1c59a

* remove custom common_includes

The includes are handled by llvm via --sysroot parameter.

* remove unnecessary parameters for make command

using the names of compiler tools same way as they are used (without full path) for ffmpeg build

* let AndroidStudio manage project root

* import cpufeatures from NDK

* Enable stale action

* Use JSON parsing in getMediaInformation, fixes #417

* Remove internal log line limit on Android, fixes #418

* add support for vo-amrwbenc, fixes #381

* Enable all gpl libraries when both --full and --enable-gpl flags are present, fixes #394

* let the project be opened and managed in Android Studio

* bring in cpu_features as a submodule

* add cpu_features script

and some helper fuctions to android-common

* fix lint errors

* use cpu_features script

it's a regular library, only it's enabled by default

* import cpu_features into Android.mk

also clean up the Android.mk files a bit
also, import libc++_shared correctly, so that it is packed in AAR

* fix Android.lts.mk

* with NDK r20 and higher, openh264.a does not depend on libc++

* Revert "with NDK r20 and higher, openh264.a does not depend on libc++"

This reverts commit dc751016

* Revert a (small) portion of commit e77f8971

On lower API, openh264 depends on libc++_shared. Here, for simplicity, we force this dependency for all API levels.

* LTS: fix the static constructor blocks to handle the changed name of the cpu features library

Also, add ffmpeg dependencies for lower APIs (how did it work before?)
Also, just try to load c++_shared if it is present, not trying to guess whether the external libraries require it (android.sh will still make the decision to add c++_shared to dependencies list based on the list of external libraries).

* switch the submodule to fork

* rename the submodule library

* scripts changed for renamed libary and move cpu-features to slot 47

create_cpufeatures_package_config moved back to android-common.sh
android_ndk_cmake to handle generic Android-NDK toolchain invocation of cmake

* update the Android.mk files to reflect cpu-features rename

also, remove unnecessary dependencies

* fix for LTS

* not needed anymore

* revert the commit 740fd2e9

load of c++_shared determined by the list of enabled external libraries

* Using static lib for Google cpu-features

* let openh264 work with external cpu-features

compatible with NDK deperecated implementation and with ndk_compat from https://github.com/google/cpu_features

* set packages path

* make android-cpu-features.sh executable

* automatically update submodules from android.sh

* disable publishing to bintray

* bump version

* list cpu-features after builtin libraries

* fix javadoc warnings

* disable stripping of debug symbols for ffmpeg, fixes #447

* do not detach main thread on error cases, fixes #446

* release unreleased utf strings in setNativeEnvironmentVariable(), fixes #443

* implement toString() method for Statistics and LogMessage classes, fixes #438

* do not install lldb for android in travis builds

* fix travis builds

* remove unused test resources

* switch src/cpu-features remote to google/cpu_features

* switch expat source code with expat submodule

* update submodules in top level build scripts

* switch openh264 source code with openh264 submodule

* implement bash functions to download external libraries

* implement ignoreSignal api method, fixes #258, #214

* use the latest android ndk

* disable avfoundation device for ios lts releases, fixes #462

* update ios test-app versions

* implement an api method to set environment variables, fixes #466

* update release scripts to use the latest ndk version

* update stale.yml

* implement ffmpeg async api

* add executionId to log and statistic callbacks

* fix ndk version in travis

* fix test commands in android test app

* fix android env variables  in travis

* switch to personal fork for cpu-features, use in-repo sources for expat and openh264

* introduce an api method to list ongoing executions

* use a thread safe implementation to list ongoing executions

* add startTime to FFmpegExecution class

* test openh264 in ios/tvos test applications

* use new x265 version v3.4

* use new x264 version v20200630-stable

* use new chromaprint version v1.5.0

* use new wavpack version v5.3.0

* use new kvazaar version v2.0.0

* use new libvorbis version v1.3.7

* use new nettle version v3.6

* use new libjpeg-turbo version v2.0.5

* use new ffmpeg version v4.4-dev-416-g1998d1d6af

* remove coreimage references on ios/tvos, fixes #480

* use new freetype version 2.10.2

* enable redownloading of ffmpeg source code

* freeze v4.4

* disable building of audiotoolbox output device on ios/tvos

* do not process log lines with zero length on ios/tvos

* update libsamplerate build workarounds

* do not print parsing exceptions for not found keys on android

* synchronize updating lastCommandOutput on ios/tvos, fixes #494

* introduce execution specific log levels, fixes #495

* fix x265 compilation errors on ios/tvos

* fix android lts neon packaging

* fix processing of ios/tvos flags

* fix mobile-ffmpeg videotoolbox flags for tvos

* release v4.4.LTS

* use v4.4.LTS in test applications

* fix ios/tvos system library indexes in ffmpeg build scripts

* update ios test-app settings

* fix android release packaging script

* Update README

Co-authored-by: alexcohn <sasha.cohn@gmail.com>
2020-07-29 21:28:04 +01:00

947 lines
183 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MobileFFmpeg Android API: mobileffmpeg.c Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">MobileFFmpeg Android API
&#160;<span id="projectnumber">4.4</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">mobileffmpeg.c</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../dd/d16/mobileffmpeg_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2018 Taner Sener</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * This file is part of MobileFFmpeg.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * MobileFFmpeg is free software: you can redistribute it and/or modify</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * it under the terms of the GNU Lesser General Public License as published by</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * (at your option) any later version.</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * MobileFFmpeg is distributed in the hope that it will be useful,</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * GNU Lesser General Public License for more details.</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * You should have received a copy of the GNU Lesser General Public License</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * along with MobileFFmpeg. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;pthread.h&gt;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;sys/stat.h&gt;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;libavcodec/jni.h&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;libavutil/bprint.h&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/db3/fftools__ffmpeg_8h.html">fftools_ffmpeg.h</a>&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d8/da5/mobileffmpeg_8h.html">mobileffmpeg.h</a>&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dd/dbd/mobileffprobe_8h.html">mobileffprobe.h</a>&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="../../d2/dc3/struct_callback_data.html"> 32</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../d2/dc3/struct_callback_data.html">CallbackData</a> {</div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28"> 33</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">type</a>; <span class="comment">// 1 (log callback) or 2 (statistics callback)</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="../../d2/dc3/struct_callback_data.html#ab2f13e938142641cd8f897e0729d2aa6"> 34</a></span>&#160; <span class="keywordtype">long</span> <a class="code" href="../../d2/dc3/struct_callback_data.html#ab2f13e938142641cd8f897e0729d2aa6">executionId</a>; <span class="comment">// execution id</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; </div>
<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="../../d2/dc3/struct_callback_data.html#a0108648839b77d246e659a7eefdde4fb"> 36</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../d2/dc3/struct_callback_data.html#a0108648839b77d246e659a7eefdde4fb">logLevel</a>; <span class="comment">// log level</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="../../d2/dc3/struct_callback_data.html#ae7661f79a95fe7d0eaa118264431f9c2"> 37</a></span>&#160; AVBPrint <a class="code" href="../../d2/dc3/struct_callback_data.html#ae7661f79a95fe7d0eaa118264431f9c2">logData</a>; <span class="comment">// log data</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; </div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="../../d2/dc3/struct_callback_data.html#a6ea1c5fbcf7ad64a04687d738a9c6559"> 39</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../d2/dc3/struct_callback_data.html#a6ea1c5fbcf7ad64a04687d738a9c6559">statisticsFrameNumber</a>; <span class="comment">// statistics frame number</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="../../d2/dc3/struct_callback_data.html#ad4ef14e9625fe915267d644480e9410f"> 40</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="../../d2/dc3/struct_callback_data.html#ad4ef14e9625fe915267d644480e9410f">statisticsFps</a>; <span class="comment">// statistics fps</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="../../d2/dc3/struct_callback_data.html#a0eba672f8309ce08c41eeb63c48091af"> 41</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="../../d2/dc3/struct_callback_data.html#a0eba672f8309ce08c41eeb63c48091af">statisticsQuality</a>; <span class="comment">// statistics quality</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="../../d2/dc3/struct_callback_data.html#aee6855bc657b56db6c8a32656b3018c4"> 42</a></span>&#160; int64_t <a class="code" href="../../d2/dc3/struct_callback_data.html#aee6855bc657b56db6c8a32656b3018c4">statisticsSize</a>; <span class="comment">// statistics size</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="../../d2/dc3/struct_callback_data.html#abe4eff38e39d603bd966c554e9e5afc8"> 43</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../d2/dc3/struct_callback_data.html#abe4eff38e39d603bd966c554e9e5afc8">statisticsTime</a>; <span class="comment">// statistics time</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="../../d2/dc3/struct_callback_data.html#a0e02eb985ed5c68bdf82a3445c0b4514"> 44</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="../../d2/dc3/struct_callback_data.html#a0e02eb985ed5c68bdf82a3445c0b4514">statisticsBitrate</a>; <span class="comment">// statistics bitrate</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="../../d2/dc3/struct_callback_data.html#a577a99dc4c2767d1946ac174f7a0c69e"> 45</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="../../d2/dc3/struct_callback_data.html#a577a99dc4c2767d1946ac174f7a0c69e">statisticsSpeed</a>; <span class="comment">// statistics speed</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="../../d2/dc3/struct_callback_data.html#a2e5d0fd0859aca2c5a304b4823b86ccd"> 47</a></span>&#160; <span class="keyword">struct </span><a class="code" href="../../d2/dc3/struct_callback_data.html">CallbackData</a> *<a class="code" href="../../d2/dc3/struct_callback_data.html#a2e5d0fd0859aca2c5a304b4823b86ccd">next</a>;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;};</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a9b3526e178b82f67d04bfe97422e9c05"> 51</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a9b3526e178b82f67d04bfe97422e9c05">EXECUTION_MAP_SIZE</a> = 1000;</div>
<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a747764bcf840e03ee400686bab435bb6"> 52</a></span>&#160;<span class="keyword">static</span> <span class="keyword">volatile</span> <span class="keywordtype">int</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a747764bcf840e03ee400686bab435bb6">executionMap</a>[<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a9b3526e178b82f67d04bfe97422e9c05">EXECUTION_MAP_SIZE</a>];</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a179b0d4fd046229942a9dadce29cdefb"> 53</a></span>&#160;<span class="keyword">static</span> pthread_mutex_t <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a179b0d4fd046229942a9dadce29cdefb">executionMapMutex</a>;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a17cd8cde8b9e93de98e6423595f79be4"> 56</a></span>&#160;<span class="keyword">static</span> pthread_mutex_t <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a17cd8cde8b9e93de98e6423595f79be4">lockMutex</a>;</div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#ad2c255b69a5008c1ac7df0201eb9f7bc"> 57</a></span>&#160;<span class="keyword">static</span> pthread_mutex_t <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad2c255b69a5008c1ac7df0201eb9f7bc">monitorMutex</a>;</div>
<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a9985bec8e575d918f2910c195a89d0c7"> 58</a></span>&#160;<span class="keyword">static</span> pthread_cond_t <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a9985bec8e575d918f2910c195a89d0c7">monitorCondition</a>;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a30047bcfe52a18b75cc67967fcb999db"> 61</a></span>&#160;<span class="keyword">static</span> pthread_mutex_t <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a30047bcfe52a18b75cc67967fcb999db">logMutex</a>;</div>
<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#aca9480e40064f33dc4cae39120d2fae8"> 62</a></span>&#160;<span class="keyword">static</span> AVBPrint <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aca9480e40064f33dc4cae39120d2fae8">lastCommandOutput</a>;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
<div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a8e98224bd935d38a24a6b1ed48adcc66"> 64</a></span>&#160;pthread_t <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a8e98224bd935d38a24a6b1ed48adcc66">callbackThread</a>;</div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#aad49c603a65074ce7a5d491ce9a54eb5"> 65</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aad49c603a65074ce7a5d491ce9a54eb5">redirectionEnabled</a>;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; </div>
<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a8e6f1679df340e6702b973d5e9af5057"> 67</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../d2/dc3/struct_callback_data.html">CallbackData</a> *<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a8e6f1679df340e6702b973d5e9af5057">callbackDataHead</a>;</div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a2243f7be810d9b6ae653d381b0c5e031"> 68</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../d2/dc3/struct_callback_data.html">CallbackData</a> *<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2243f7be810d9b6ae653d381b0c5e031">callbackDataTail</a>;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a836d04ac8f7f51d0e6181c641eed7441"> 71</a></span>&#160;<span class="keyword">static</span> JavaVM *<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a836d04ac8f7f51d0e6181c641eed7441">globalVm</a>;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#ade6d1da5041bb8ac83ee2c50140d3649"> 74</a></span>&#160;<span class="keyword">static</span> jclass <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ade6d1da5041bb8ac83ee2c50140d3649">configClass</a>;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#ad6ed2afe8a0e43d77b474a22fcb26252"> 77</a></span>&#160;<span class="keyword">static</span> jmethodID <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad6ed2afe8a0e43d77b474a22fcb26252">logMethod</a>;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#afb701a25861b4bc7d008764199e39b39"> 80</a></span>&#160;<span class="keyword">static</span> jmethodID <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#afb701a25861b4bc7d008764199e39b39">statisticsMethod</a>;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a11af305e0be488c5236eab86b470e818"> 83</a></span>&#160;<span class="keyword">static</span> jclass <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a11af305e0be488c5236eab86b470e818">stringClass</a>;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; </div>
<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#af5b32fa73a2431ebd659115b54eb1513"> 86</a></span>&#160;<span class="keyword">static</span> jmethodID <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#af5b32fa73a2431ebd659115b54eb1513">stringConstructor</a>;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; </div>
<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a5600185f07cb71e002b7916f2d425461"> 89</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a5600185f07cb71e002b7916f2d425461">configClassName</a> = <span class="stringliteral">&quot;com/arthenica/mobileffmpeg/Config&quot;</span>;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a601e42e4859c5e69145f77aa37da8b99"> 92</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a601e42e4859c5e69145f77aa37da8b99">stringClassName</a> = <span class="stringliteral">&quot;java/lang/String&quot;</span>;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#afbd89b768ade5ebb57205d8346acaa03"> 95</a></span>&#160;<span class="keyword">volatile</span> <span class="keywordtype">int</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#afbd89b768ade5ebb57205d8346acaa03">handleSIGQUIT</a> = 1;</div>
<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a43764cf85b951e6e0d9cc6f74e24c721"> 96</a></span>&#160;<span class="keyword">volatile</span> <span class="keywordtype">int</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a43764cf85b951e6e0d9cc6f74e24c721">handleSIGINT</a> = 1;</div>
<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a4c48fbb1622eb5a5a7d31d1f9c2c9447"> 97</a></span>&#160;<span class="keyword">volatile</span> <span class="keywordtype">int</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a4c48fbb1622eb5a5a7d31d1f9c2c9447">handleSIGTERM</a> = 1;</div>
<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#ad8148e9f47355623f9ad3c1578844cd3"> 98</a></span>&#160;<span class="keyword">volatile</span> <span class="keywordtype">int</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad8148e9f47355623f9ad3c1578844cd3">handleSIGXCPU</a> = 1;</div>
<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#acd19ea38bd4b2ebb549ed4630bdca918"> 99</a></span>&#160;<span class="keyword">volatile</span> <span class="keywordtype">int</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#acd19ea38bd4b2ebb549ed4630bdca918">handleSIGPIPE</a> = 1;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a97214549fe2d40f7420cc64ac122f670"> 102</a></span>&#160;__thread <span class="keyword">volatile</span> <span class="keywordtype">long</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a97214549fe2d40f7420cc64ac122f670">executionId</a> = 0;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a61876b43554384a035129fe6c2bd8a52"> 105</a></span>&#160;JNINativeMethod <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a61876b43554384a035129fe6c2bd8a52">configMethods</a>[] = {</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {<span class="stringliteral">&quot;enableNativeRedirection&quot;</span>, <span class="stringliteral">&quot;()V&quot;</span>, (<span class="keywordtype">void</span>*) <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a58a478f0081759684239fd9fa2037399">Java_com_arthenica_mobileffmpeg_Config_enableNativeRedirection</a>},</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {<span class="stringliteral">&quot;disableNativeRedirection&quot;</span>, <span class="stringliteral">&quot;()V&quot;</span>, (<span class="keywordtype">void</span>*) <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a3696e05ac42c8507b50ca463bdf679c5">Java_com_arthenica_mobileffmpeg_Config_disableNativeRedirection</a>},</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {<span class="stringliteral">&quot;setNativeLogLevel&quot;</span>, <span class="stringliteral">&quot;(I)V&quot;</span>, (<span class="keywordtype">void</span>*) <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aede930dcf5d80c598168d08b31d7dded">Java_com_arthenica_mobileffmpeg_Config_setNativeLogLevel</a>},</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {<span class="stringliteral">&quot;getNativeLogLevel&quot;</span>, <span class="stringliteral">&quot;()I&quot;</span>, (<span class="keywordtype">void</span>*) <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a3b4b16da8cbe6b11f895128b4e2a31ac">Java_com_arthenica_mobileffmpeg_Config_getNativeLogLevel</a>},</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {<span class="stringliteral">&quot;getNativeFFmpegVersion&quot;</span>, <span class="stringliteral">&quot;()Ljava/lang/String;&quot;</span>, (<span class="keywordtype">void</span>*) <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad023e8da6a9d0fccf1cd1756f79348c0">Java_com_arthenica_mobileffmpeg_Config_getNativeFFmpegVersion</a>},</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {<span class="stringliteral">&quot;getNativeVersion&quot;</span>, <span class="stringliteral">&quot;()Ljava/lang/String;&quot;</span>, (<span class="keywordtype">void</span>*) <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#abaf625f6d3ae5c5ea25300d9c95b2655">Java_com_arthenica_mobileffmpeg_Config_getNativeVersion</a>},</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {<span class="stringliteral">&quot;nativeFFmpegExecute&quot;</span>, <span class="stringliteral">&quot;(J[Ljava/lang/String;)I&quot;</span>, (<span class="keywordtype">void</span>*) <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#adfa886d784ecd1ab17ca78d105a6018d">Java_com_arthenica_mobileffmpeg_Config_nativeFFmpegExecute</a>},</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {<span class="stringliteral">&quot;nativeFFmpegCancel&quot;</span>, <span class="stringliteral">&quot;(J)V&quot;</span>, (<span class="keywordtype">void</span>*) <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a033de66d12e3e0f4a59406b63ca58aa6">Java_com_arthenica_mobileffmpeg_Config_nativeFFmpegCancel</a>},</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {<span class="stringliteral">&quot;nativeFFprobeExecute&quot;</span>, <span class="stringliteral">&quot;([Ljava/lang/String;)I&quot;</span>, (<span class="keywordtype">void</span>*) <a class="code" href="../../d5/dae/mobileffprobe_8c.html#a35a6177aba4f7fb1ee2d4014aba78593">Java_com_arthenica_mobileffmpeg_Config_nativeFFprobeExecute</a>},</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {<span class="stringliteral">&quot;registerNewNativeFFmpegPipe&quot;</span>, <span class="stringliteral">&quot;(Ljava/lang/String;)I&quot;</span>, (<span class="keywordtype">void</span>*) <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a354a4916904d5a0d7297587c93c9445d">Java_com_arthenica_mobileffmpeg_Config_registerNewNativeFFmpegPipe</a>},</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {<span class="stringliteral">&quot;getNativeBuildDate&quot;</span>, <span class="stringliteral">&quot;()Ljava/lang/String;&quot;</span>, (<span class="keywordtype">void</span>*) <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a0f3609b9b8c71abc3c4259d8e0ebadd6">Java_com_arthenica_mobileffmpeg_Config_getNativeBuildDate</a>},</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {<span class="stringliteral">&quot;setNativeEnvironmentVariable&quot;</span>, <span class="stringliteral">&quot;(Ljava/lang/String;Ljava/lang/String;)I&quot;</span>, (<span class="keywordtype">void</span>*) <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2585365fde149d00dc05a2d1a8ecb8d5">Java_com_arthenica_mobileffmpeg_Config_setNativeEnvironmentVariable</a>},</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {<span class="stringliteral">&quot;getNativeLastCommandOutput&quot;</span>, <span class="stringliteral">&quot;()Ljava/lang/String;&quot;</span>, (<span class="keywordtype">void</span>*) <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ac2143e2edc13f36da64376fdc488e486">Java_com_arthenica_mobileffmpeg_Config_getNativeLastCommandOutput</a>},</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {<span class="stringliteral">&quot;ignoreNativeSignal&quot;</span>, <span class="stringliteral">&quot;(I)V&quot;</span>, (<span class="keywordtype">void</span>*) <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#af62f41850d27f6ee3dc4a7f1a7705a3d">Java_com_arthenica_mobileffmpeg_Config_ignoreNativeSignal</a>}</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;};</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; </div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#af42fc9da8015a216f63c1c993d5c1571">ffmpeg_execute</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; </div>
<div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#afcbebcb2971b24e9601eb99d5411cb1b"> 125</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#afcbebcb2971b24e9601eb99d5411cb1b">avutil_log_get_level_str</a>(<span class="keywordtype">int</span> level) {</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">switch</span> (level) {</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a632891572be1648c03646028e8bfcac1">AV_LOG_STDERR</a>:</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;stderr&quot;</span>;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">case</span> AV_LOG_QUIET:</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;quiet&quot;</span>;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">case</span> AV_LOG_DEBUG:</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;debug&quot;</span>;</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">case</span> AV_LOG_VERBOSE:</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;verbose&quot;</span>;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">case</span> AV_LOG_INFO:</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;info&quot;</span>;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">case</span> AV_LOG_WARNING:</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;warning&quot;</span>;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">case</span> AV_LOG_ERROR:</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;error&quot;</span>;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">case</span> AV_LOG_FATAL:</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;fatal&quot;</span>;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">case</span> AV_LOG_PANIC:</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;panic&quot;</span>;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;}</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; </div>
<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a5a741178aa9707f94a3ed21dc9199563"> 150</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a5a741178aa9707f94a3ed21dc9199563">avutil_log_format_line</a>(<span class="keywordtype">void</span> *avcl, <span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span> *fmt, va_list vl, AVBPrint part[4], <span class="keywordtype">int</span> *print_prefix) {</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordtype">int</span> flags = av_log_get_flags();</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; AVClass* avc = avcl ? *(AVClass **) avcl : NULL;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; av_bprint_init(part+0, 0, 1);</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; av_bprint_init(part+1, 0, 1);</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; av_bprint_init(part+2, 0, 1);</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; av_bprint_init(part+3, 0, 65536);</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; </div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (*print_prefix &amp;&amp; avc) {</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> (avc-&gt;parent_log_context_offset) {</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; AVClass** parent = *(AVClass ***) (((uint8_t *) avcl) +</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; avc-&gt;parent_log_context_offset);</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">if</span> (parent &amp;&amp; *parent) {</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; av_bprintf(part+0, <span class="stringliteral">&quot;[%s @ %p] &quot;</span>,</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; (*parent)-&gt;item_name(parent), parent);</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; av_bprintf(part+1, <span class="stringliteral">&quot;[%s @ %p] &quot;</span>,</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; avc-&gt;item_name(avcl), avcl);</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; </div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span> (*print_prefix &amp;&amp; (level &gt; AV_LOG_QUIET) &amp;&amp; (flags &amp; AV_LOG_PRINT_LEVEL))</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; av_bprintf(part+2, <span class="stringliteral">&quot;[%s] &quot;</span>, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#afcbebcb2971b24e9601eb99d5411cb1b">avutil_log_get_level_str</a>(level));</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; </div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; av_vbprintf(part+3, fmt, vl);</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; </div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span>(*part[0].str || *part[1].str || *part[2].str || *part[3].str) {</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordtype">char</span> lastc = part[3].len &amp;&amp; part[3].len &lt;= part[3].size ? part[3].str[part[3].len - 1] : 0;</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; *print_prefix = lastc == <span class="charliteral">&#39;\n&#39;</span> || lastc == <span class="charliteral">&#39;\r&#39;</span>;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;}</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; </div>
<div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a3b2d7de73a28413df1205f881542ed5b"> 182</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a3b2d7de73a28413df1205f881542ed5b">avutil_log_sanitize</a>(uint8_t *line) {</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">while</span>(*line){</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span>(*line &lt; 0x08 || (*line &gt; 0x0D &amp;&amp; *line &lt; 0x20))</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; *line=<span class="charliteral">&#39;?&#39;</span>;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; line++;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; </div>
<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#aee493071e7c54d99ce5c2422d63fab37"> 190</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aee493071e7c54d99ce5c2422d63fab37">mutexInit</a>() {</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; pthread_mutexattr_t attributes;</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; pthread_mutexattr_init(&amp;attributes);</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; pthread_mutexattr_settype(&amp;attributes, PTHREAD_MUTEX_RECURSIVE_NP);</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; </div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; pthread_mutex_init(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a17cd8cde8b9e93de98e6423595f79be4">lockMutex</a>, &amp;attributes);</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; pthread_mutexattr_destroy(&amp;attributes);</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;}</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; </div>
<div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a9e0c5c77d11961073b29c8eb7a3afd46"> 199</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a9e0c5c77d11961073b29c8eb7a3afd46">monitorInit</a>() {</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; pthread_mutexattr_t attributes;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; pthread_mutexattr_init(&amp;attributes);</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; pthread_mutexattr_settype(&amp;attributes, PTHREAD_MUTEX_RECURSIVE_NP);</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; </div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; pthread_condattr_t cattributes;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; pthread_condattr_init(&amp;cattributes);</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; pthread_condattr_setpshared(&amp;cattributes, PTHREAD_PROCESS_PRIVATE);</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; </div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; pthread_mutex_init(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad2c255b69a5008c1ac7df0201eb9f7bc">monitorMutex</a>, &amp;attributes);</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; pthread_mutexattr_destroy(&amp;attributes);</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; </div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; pthread_cond_init(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a9985bec8e575d918f2910c195a89d0c7">monitorCondition</a>, &amp;cattributes);</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; pthread_condattr_destroy(&amp;cattributes);</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;}</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; </div>
<div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a922fe26598492a0117d8b89b417e7df5"> 215</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a922fe26598492a0117d8b89b417e7df5">logInit</a>() {</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; pthread_mutexattr_t attributes;</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; pthread_mutexattr_init(&amp;attributes);</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; pthread_mutexattr_settype(&amp;attributes, PTHREAD_MUTEX_RECURSIVE_NP);</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; </div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; pthread_mutex_init(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a30047bcfe52a18b75cc67967fcb999db">logMutex</a>, &amp;attributes);</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; pthread_mutexattr_destroy(&amp;attributes);</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; </div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; av_bprint_init(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aca9480e40064f33dc4cae39120d2fae8">lastCommandOutput</a>, 0, AV_BPRINT_SIZE_UNLIMITED);</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;}</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; </div>
<div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a4bccd6ccaa41d35f4301319241fa1793"> 226</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a4bccd6ccaa41d35f4301319241fa1793">executionMapLockInit</a>() {</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; pthread_mutexattr_t attributes;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; pthread_mutexattr_init(&amp;attributes);</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; pthread_mutexattr_settype(&amp;attributes, PTHREAD_MUTEX_RECURSIVE_NP);</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; </div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; pthread_mutex_init(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a179b0d4fd046229942a9dadce29cdefb">executionMapMutex</a>, &amp;attributes);</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; pthread_mutexattr_destroy(&amp;attributes);</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;}</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div>
<div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#ab511b1fdc2c94e1c7dac8fa2473ee94f"> 235</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ab511b1fdc2c94e1c7dac8fa2473ee94f">mutexUnInit</a>() {</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; pthread_mutex_destroy(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a17cd8cde8b9e93de98e6423595f79be4">lockMutex</a>);</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;}</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; </div>
<div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a0017ed2d6f2be362f57b10e7674fc291"> 239</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a0017ed2d6f2be362f57b10e7674fc291">monitorUnInit</a>() {</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; pthread_mutex_destroy(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad2c255b69a5008c1ac7df0201eb9f7bc">monitorMutex</a>);</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; pthread_cond_destroy(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a9985bec8e575d918f2910c195a89d0c7">monitorCondition</a>);</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;}</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; </div>
<div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a2484bb50e3452a055a3a402e4e95c91d"> 244</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2484bb50e3452a055a3a402e4e95c91d">logUnInit</a>() {</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; pthread_mutex_destroy(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a30047bcfe52a18b75cc67967fcb999db">logMutex</a>);</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;}</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; </div>
<div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#af07a333fd742b900a75df60d27b1f3f6"> 248</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#af07a333fd742b900a75df60d27b1f3f6">executionMapLockUnInit</a>() {</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; pthread_mutex_destroy(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a179b0d4fd046229942a9dadce29cdefb">executionMapMutex</a>);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;}</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; </div>
<div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#ae48265a7aeb85f80e2ff194693a4cf9a"> 252</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ae48265a7aeb85f80e2ff194693a4cf9a">mutexLock</a>() {</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="../../d8/d78/fftools__ffprobe_8c.html#a3bd1ad5edf8fc93f783af77e8cd6ee9a">pthread_mutex_lock</a>(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a17cd8cde8b9e93de98e6423595f79be4">lockMutex</a>);</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;}</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; </div>
<div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a6d92b6f672ac59598aed22ca9a0c1bc6"> 256</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a6d92b6f672ac59598aed22ca9a0c1bc6">lastCommandOutputLock</a>() {</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="../../d8/d78/fftools__ffprobe_8c.html#a3bd1ad5edf8fc93f783af77e8cd6ee9a">pthread_mutex_lock</a>(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a30047bcfe52a18b75cc67967fcb999db">logMutex</a>);</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;}</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; </div>
<div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a79ffcbbb0cbbf5775dcc5527874b3b5e"> 260</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a79ffcbbb0cbbf5775dcc5527874b3b5e">executionMapLock</a>() {</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="../../d8/d78/fftools__ffprobe_8c.html#a3bd1ad5edf8fc93f783af77e8cd6ee9a">pthread_mutex_lock</a>(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a179b0d4fd046229942a9dadce29cdefb">executionMapMutex</a>);</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;}</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; </div>
<div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#aaf4e71a99d5a6e034f605bb7b507a302"> 264</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aaf4e71a99d5a6e034f605bb7b507a302">mutexUnlock</a>() {</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="../../d8/d78/fftools__ffprobe_8c.html#aa91b7ec8ae8a2d699fb09cc20c444fe8">pthread_mutex_unlock</a>(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a17cd8cde8b9e93de98e6423595f79be4">lockMutex</a>);</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;}</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; </div>
<div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a51cc94c99ed2f9d13d7719ed0b2bd61d"> 268</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a51cc94c99ed2f9d13d7719ed0b2bd61d">lastCommandOutputUnlock</a>() {</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <a class="code" href="../../d8/d78/fftools__ffprobe_8c.html#aa91b7ec8ae8a2d699fb09cc20c444fe8">pthread_mutex_unlock</a>(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a30047bcfe52a18b75cc67967fcb999db">logMutex</a>);</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;}</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; </div>
<div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#aa4efb909db64505dd9b14ce9eed06569"> 272</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aa4efb909db64505dd9b14ce9eed06569">executionMapUnlock</a>() {</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="../../d8/d78/fftools__ffprobe_8c.html#aa91b7ec8ae8a2d699fb09cc20c444fe8">pthread_mutex_unlock</a>(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a179b0d4fd046229942a9dadce29cdefb">executionMapMutex</a>);</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;}</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; </div>
<div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="../../d5/dae/mobileffprobe_8c.html#a40ae83f55a0381052220ce40531471c7"> 276</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a40ae83f55a0381052220ce40531471c7">clearLastCommandOutput</a>() {</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a6d92b6f672ac59598aed22ca9a0c1bc6">lastCommandOutputLock</a>();</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; av_bprint_clear(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aca9480e40064f33dc4cae39120d2fae8">lastCommandOutput</a>);</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a51cc94c99ed2f9d13d7719ed0b2bd61d">lastCommandOutputUnlock</a>();</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;}</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; </div>
<div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#ad6eaa7c3d683c6a58bb16874dcd8be54"> 282</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad6eaa7c3d683c6a58bb16874dcd8be54">appendLastCommandOutput</a>(AVBPrint *logMessage) {</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> (logMessage-&gt;len &lt;= 0) {</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; </div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a6d92b6f672ac59598aed22ca9a0c1bc6">lastCommandOutputLock</a>();</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; av_bprintf(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aca9480e40064f33dc4cae39120d2fae8">lastCommandOutput</a>, <span class="stringliteral">&quot;%s&quot;</span>, logMessage-&gt;str);</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a51cc94c99ed2f9d13d7719ed0b2bd61d">lastCommandOutputUnlock</a>();</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;}</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; </div>
<div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a69866f167ddff23a79c8bafc39204bae"> 292</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a69866f167ddff23a79c8bafc39204bae">monitorWait</a>(<span class="keywordtype">int</span> milliSeconds) {</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keyword">struct </span>timeval tp;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keyword">struct </span>timespec ts;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordtype">int</span> rc;</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; </div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; rc = gettimeofday(&amp;tp, NULL);</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span> (rc) {</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; </div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; ts.tv_sec = tp.tv_sec;</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; ts.tv_nsec = tp.tv_usec * 1000;</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; ts.tv_sec += milliSeconds / 1000;</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; ts.tv_nsec += (milliSeconds % 1000)*1000000;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; </div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="../../d8/d78/fftools__ffprobe_8c.html#a3bd1ad5edf8fc93f783af77e8cd6ee9a">pthread_mutex_lock</a>(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad2c255b69a5008c1ac7df0201eb9f7bc">monitorMutex</a>);</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; pthread_cond_timedwait(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a9985bec8e575d918f2910c195a89d0c7">monitorCondition</a>, &amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad2c255b69a5008c1ac7df0201eb9f7bc">monitorMutex</a>, &amp;ts);</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="../../d8/d78/fftools__ffprobe_8c.html#aa91b7ec8ae8a2d699fb09cc20c444fe8">pthread_mutex_unlock</a>(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad2c255b69a5008c1ac7df0201eb9f7bc">monitorMutex</a>);</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;}</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; </div>
<div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a31c47b02812375efdbb56a731f027993"> 312</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a31c47b02812375efdbb56a731f027993">monitorNotify</a>() {</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="../../d8/d78/fftools__ffprobe_8c.html#a3bd1ad5edf8fc93f783af77e8cd6ee9a">pthread_mutex_lock</a>(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad2c255b69a5008c1ac7df0201eb9f7bc">monitorMutex</a>);</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; pthread_cond_signal(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a9985bec8e575d918f2910c195a89d0c7">monitorCondition</a>);</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="../../d8/d78/fftools__ffprobe_8c.html#aa91b7ec8ae8a2d699fb09cc20c444fe8">pthread_mutex_unlock</a>(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad2c255b69a5008c1ac7df0201eb9f7bc">monitorMutex</a>);</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;}</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; </div>
<div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#afbe8c61b2fd9575361f83f73a55b3c62"> 324</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#afbe8c61b2fd9575361f83f73a55b3c62">logCallbackDataAdd</a>(<span class="keywordtype">int</span> level, AVBPrint *data) {</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; </div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="comment">// CREATE DATA STRUCT FIRST</span></div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keyword">struct </span><a class="code" href="../../d2/dc3/struct_callback_data.html">CallbackData</a> *newData = (<span class="keyword">struct </span><a class="code" href="../../d2/dc3/struct_callback_data.html">CallbackData</a>*)av_malloc(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="../../d2/dc3/struct_callback_data.html">CallbackData</a>));</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; newData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">type</a> = 1;</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; newData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#ab2f13e938142641cd8f897e0729d2aa6">executionId</a> = <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a97214549fe2d40f7420cc64ac122f670">executionId</a>;</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; newData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a0108648839b77d246e659a7eefdde4fb">logLevel</a> = level;</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; av_bprint_init(&amp;newData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#ae7661f79a95fe7d0eaa118264431f9c2">logData</a>, 0, AV_BPRINT_SIZE_UNLIMITED);</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; av_bprintf(&amp;newData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#ae7661f79a95fe7d0eaa118264431f9c2">logData</a>, <span class="stringliteral">&quot;%s&quot;</span>, data-&gt;str);</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; newData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a2e5d0fd0859aca2c5a304b4823b86ccd">next</a> = NULL;</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; </div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ae48265a7aeb85f80e2ff194693a4cf9a">mutexLock</a>();</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; </div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="comment">// INSERT IT TO THE END OF QUEUE</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2243f7be810d9b6ae653d381b0c5e031">callbackDataTail</a> == NULL) {</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2243f7be810d9b6ae653d381b0c5e031">callbackDataTail</a> = newData;</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; </div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a8e6f1679df340e6702b973d5e9af5057">callbackDataHead</a> != NULL) {</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#ae02538a80ad5fc009caec73487d11a8d">LOGE</a>(<span class="stringliteral">&quot;Dangling callback data head detected. This can cause memory leak.&quot;</span>);</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a8e6f1679df340e6702b973d5e9af5057">callbackDataHead</a> = newData;</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keyword">struct </span><a class="code" href="../../d2/dc3/struct_callback_data.html">CallbackData</a> *oldTail = <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2243f7be810d9b6ae653d381b0c5e031">callbackDataTail</a>;</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; oldTail-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a2e5d0fd0859aca2c5a304b4823b86ccd">next</a> = newData;</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; </div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2243f7be810d9b6ae653d381b0c5e031">callbackDataTail</a> = newData;</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; </div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aaf4e71a99d5a6e034f605bb7b507a302">mutexUnlock</a>();</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; </div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a31c47b02812375efdbb56a731f027993">monitorNotify</a>();</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;}</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; </div>
<div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a5f5082a8a3faf4573f6b11934b50af3a"> 361</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a5f5082a8a3faf4573f6b11934b50af3a">statisticsCallbackDataAdd</a>(<span class="keywordtype">int</span> frameNumber, <span class="keywordtype">float</span> fps, <span class="keywordtype">float</span> quality, int64_t size, <span class="keywordtype">int</span> time, <span class="keywordtype">double</span> bitrate, <span class="keywordtype">double</span> speed) {</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; </div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="comment">// CREATE DATA STRUCT FIRST</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keyword">struct </span><a class="code" href="../../d2/dc3/struct_callback_data.html">CallbackData</a> *newData = (<span class="keyword">struct </span><a class="code" href="../../d2/dc3/struct_callback_data.html">CallbackData</a>*)av_malloc(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="../../d2/dc3/struct_callback_data.html">CallbackData</a>));</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; newData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">type</a> = 2;</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; newData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#ab2f13e938142641cd8f897e0729d2aa6">executionId</a> = <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a97214549fe2d40f7420cc64ac122f670">executionId</a>;</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; newData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a6ea1c5fbcf7ad64a04687d738a9c6559">statisticsFrameNumber</a> = frameNumber;</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; newData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#ad4ef14e9625fe915267d644480e9410f">statisticsFps</a> = fps;</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; newData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a0eba672f8309ce08c41eeb63c48091af">statisticsQuality</a> = quality;</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; newData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#aee6855bc657b56db6c8a32656b3018c4">statisticsSize</a> = size;</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; newData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#abe4eff38e39d603bd966c554e9e5afc8">statisticsTime</a> = time;</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; newData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a0e02eb985ed5c68bdf82a3445c0b4514">statisticsBitrate</a> = bitrate;</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; newData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a577a99dc4c2767d1946ac174f7a0c69e">statisticsSpeed</a> = speed;</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; </div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; newData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a2e5d0fd0859aca2c5a304b4823b86ccd">next</a> = NULL;</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; </div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ae48265a7aeb85f80e2ff194693a4cf9a">mutexLock</a>();</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; </div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="comment">// INSERT IT TO THE END OF QUEUE</span></div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2243f7be810d9b6ae653d381b0c5e031">callbackDataTail</a> == NULL) {</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2243f7be810d9b6ae653d381b0c5e031">callbackDataTail</a> = newData;</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; </div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a8e6f1679df340e6702b973d5e9af5057">callbackDataHead</a> != NULL) {</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#ae02538a80ad5fc009caec73487d11a8d">LOGE</a>(<span class="stringliteral">&quot;Dangling callback data head detected. This can cause memory leak.&quot;</span>);</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a8e6f1679df340e6702b973d5e9af5057">callbackDataHead</a> = newData;</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">struct </span><a class="code" href="../../d2/dc3/struct_callback_data.html">CallbackData</a> *oldTail = <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2243f7be810d9b6ae653d381b0c5e031">callbackDataTail</a>;</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; oldTail-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a2e5d0fd0859aca2c5a304b4823b86ccd">next</a> = newData;</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; </div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2243f7be810d9b6ae653d381b0c5e031">callbackDataTail</a> = newData;</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; </div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aaf4e71a99d5a6e034f605bb7b507a302">mutexUnlock</a>();</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; </div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a31c47b02812375efdbb56a731f027993">monitorNotify</a>();</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;}</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; </div>
<div class="line"><a name="l00405"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a6f78a97a58db09a4baa833fdb45dbd63"> 405</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a6f78a97a58db09a4baa833fdb45dbd63">addExecution</a>(<span class="keywordtype">long</span> <span class="keywordtype">id</span>) {</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a79ffcbbb0cbbf5775dcc5527874b3b5e">executionMapLock</a>();</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; </div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordtype">int</span> key = <span class="keywordtype">id</span> % <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a9b3526e178b82f67d04bfe97422e9c05">EXECUTION_MAP_SIZE</a>;</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a747764bcf840e03ee400686bab435bb6">executionMap</a>[key] = 1;</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; </div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aa4efb909db64505dd9b14ce9eed06569">executionMapUnlock</a>();</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;}</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; </div>
<div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#aa96f996dfe48ae6115d32546642bb106"> 417</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../d2/dc3/struct_callback_data.html">CallbackData</a> *<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aa96f996dfe48ae6115d32546642bb106">callbackDataRemove</a>() {</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keyword">struct </span><a class="code" href="../../d2/dc3/struct_callback_data.html">CallbackData</a> *currentData;</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; </div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ae48265a7aeb85f80e2ff194693a4cf9a">mutexLock</a>();</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; </div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a8e6f1679df340e6702b973d5e9af5057">callbackDataHead</a> == NULL) {</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; currentData = NULL;</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; currentData = <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a8e6f1679df340e6702b973d5e9af5057">callbackDataHead</a>;</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; </div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">struct </span><a class="code" href="../../d2/dc3/struct_callback_data.html">CallbackData</a> *nextHead = currentData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a2e5d0fd0859aca2c5a304b4823b86ccd">next</a>;</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">if</span> (nextHead == NULL) {</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a8e6f1679df340e6702b973d5e9af5057">callbackDataHead</a> != <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2243f7be810d9b6ae653d381b0c5e031">callbackDataTail</a>) {</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#ae02538a80ad5fc009caec73487d11a8d">LOGE</a>(<span class="stringliteral">&quot;Head and tail callback data pointers do not match for single callback data element. This can cause memory leak.&quot;</span>);</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2243f7be810d9b6ae653d381b0c5e031">callbackDataTail</a> = NULL;</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a8e6f1679df340e6702b973d5e9af5057">callbackDataHead</a> = NULL;</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; </div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a8e6f1679df340e6702b973d5e9af5057">callbackDataHead</a> = nextHead;</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; </div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aaf4e71a99d5a6e034f605bb7b507a302">mutexUnlock</a>();</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; </div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">return</span> currentData;</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;}</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; </div>
<div class="line"><a name="l00451"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#af7158d712e8854ad8c2f50d79187f1a1"> 451</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#af7158d712e8854ad8c2f50d79187f1a1">removeExecution</a>(<span class="keywordtype">long</span> <span class="keywordtype">id</span>) {</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a79ffcbbb0cbbf5775dcc5527874b3b5e">executionMapLock</a>();</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; </div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordtype">int</span> key = <span class="keywordtype">id</span> % <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a9b3526e178b82f67d04bfe97422e9c05">EXECUTION_MAP_SIZE</a>;</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a747764bcf840e03ee400686bab435bb6">executionMap</a>[key] = 0;</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; </div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aa4efb909db64505dd9b14ce9eed06569">executionMapUnlock</a>();</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;}</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; </div>
<div class="line"><a name="l00466"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#aada08ab4f0a4e8ca6b7502737c057ca9"> 466</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aada08ab4f0a4e8ca6b7502737c057ca9">cancelRequested</a>(<span class="keywordtype">long</span> <span class="keywordtype">id</span>) {</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordtype">int</span> found = 0;</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; </div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a79ffcbbb0cbbf5775dcc5527874b3b5e">executionMapLock</a>();</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; </div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordtype">int</span> key = <span class="keywordtype">id</span> % <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a9b3526e178b82f67d04bfe97422e9c05">EXECUTION_MAP_SIZE</a>;</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a747764bcf840e03ee400686bab435bb6">executionMap</a>[key] == 0) {</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; found = 1;</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; }</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; </div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aa4efb909db64505dd9b14ce9eed06569">executionMapUnlock</a>();</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; </div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">return</span> found;</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;}</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; </div>
<div class="line"><a name="l00489"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a2a0b0c8c4f0496cd0ed87e183a0a493d"> 489</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2a0b0c8c4f0496cd0ed87e183a0a493d">mobileffmpeg_log_callback_function</a>(<span class="keywordtype">void</span> *ptr, <span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span>* format, va_list vargs) {</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; AVBPrint fullLine;</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; AVBPrint part[4];</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordtype">int</span> print_prefix = 1;</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; </div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span> (level &gt;= 0) {</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; level &amp;= 0xff;</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordtype">int</span> activeLogLevel = av_log_get_level();</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; </div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">// AV_LOG_STDERR logs are always redirected</span></div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">if</span> ((activeLogLevel == AV_LOG_QUIET &amp;&amp; level != <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a632891572be1648c03646028e8bfcac1">AV_LOG_STDERR</a>) || (level &gt; activeLogLevel)) {</div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; </div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; av_bprint_init(&amp;fullLine, 0, AV_BPRINT_SIZE_UNLIMITED);</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; </div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a5a741178aa9707f94a3ed21dc9199563">avutil_log_format_line</a>(ptr, level, format, vargs, part, &amp;print_prefix);</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a3b2d7de73a28413df1205f881542ed5b">avutil_log_sanitize</a>(part[0].str);</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a3b2d7de73a28413df1205f881542ed5b">avutil_log_sanitize</a>(part[1].str);</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a3b2d7de73a28413df1205f881542ed5b">avutil_log_sanitize</a>(part[2].str);</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a3b2d7de73a28413df1205f881542ed5b">avutil_log_sanitize</a>(part[3].str);</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; </div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="comment">// COMBINE ALL 4 LOG PARTS</span></div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; av_bprintf(&amp;fullLine, <span class="stringliteral">&quot;%s%s%s%s&quot;</span>, part[0].str, part[1].str, part[2].str, part[3].str);</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; </div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">if</span> (fullLine.len &gt; 0) {</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#afbe8c61b2fd9575361f83f73a55b3c62">logCallbackDataAdd</a>(level, &amp;fullLine);</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad6eaa7c3d683c6a58bb16874dcd8be54">appendLastCommandOutput</a>(&amp;fullLine);</div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; </div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; av_bprint_finalize(part, NULL);</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; av_bprint_finalize(part+1, NULL);</div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; av_bprint_finalize(part+2, NULL);</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; av_bprint_finalize(part+3, NULL);</div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; av_bprint_finalize(&amp;fullLine, NULL);</div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;}</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; </div>
<div class="line"><a name="l00538"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a6eb0937147ed33c73e39f95ba9260e3e"> 538</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a6eb0937147ed33c73e39f95ba9260e3e">mobileffmpeg_statistics_callback_function</a>(<span class="keywordtype">int</span> frameNumber, <span class="keywordtype">float</span> fps, <span class="keywordtype">float</span> quality, int64_t size, <span class="keywordtype">int</span> time, <span class="keywordtype">double</span> bitrate, <span class="keywordtype">double</span> speed) {</div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a5f5082a8a3faf4573f6b11934b50af3a">statisticsCallbackDataAdd</a>(frameNumber, fps, quality, size, time, bitrate, speed);</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;}</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; </div>
<div class="line"><a name="l00545"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#a90a2d5a2a8e786429a9ce09409b8c313"> 545</a></span>&#160;<span class="keywordtype">void</span> *<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a90a2d5a2a8e786429a9ce09409b8c313">callbackThreadFunction</a>() {</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; JNIEnv *env;</div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; jint getEnvRc = (*globalVm)-&gt;GetEnv(<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a836d04ac8f7f51d0e6181c641eed7441">globalVm</a>, (<span class="keywordtype">void</span>**) &amp;env, JNI_VERSION_1_6);</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">if</span> (getEnvRc != JNI_OK) {</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">if</span> (getEnvRc != JNI_EDETACHED) {</div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#ae02538a80ad5fc009caec73487d11a8d">LOGE</a>(<span class="stringliteral">&quot;Callback thread failed to GetEnv for class %s with rc %d.\n&quot;</span>, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a5600185f07cb71e002b7916f2d425461">configClassName</a>, getEnvRc);</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; }</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; </div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">if</span> ((*globalVm)-&gt;AttachCurrentThread(<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a836d04ac8f7f51d0e6181c641eed7441">globalVm</a>, &amp;env, NULL) != 0) {</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#ae02538a80ad5fc009caec73487d11a8d">LOGE</a>(<span class="stringliteral">&quot;Callback thread failed to AttachCurrentThread for class %s.\n&quot;</span>, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a5600185f07cb71e002b7916f2d425461">configClassName</a>);</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; }</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; </div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#aa839997a58e14061861cd634fdb7664d">LOGD</a>(<span class="stringliteral">&quot;Callback thread started.\n&quot;</span>);</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; </div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">while</span>(<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aad49c603a65074ce7a5d491ce9a54eb5">redirectionEnabled</a>) {</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; </div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keyword">struct </span><a class="code" href="../../d2/dc3/struct_callback_data.html">CallbackData</a> *callbackData = <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aa96f996dfe48ae6115d32546642bb106">callbackDataRemove</a>();</div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">if</span> (callbackData != NULL) {</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">if</span> (callbackData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">type</a> == 1) {</div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; </div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="comment">// LOG CALLBACK</span></div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; </div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordtype">int</span> size = callbackData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#ae7661f79a95fe7d0eaa118264431f9c2">logData</a>.len;</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; </div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; jbyteArray byteArray = (jbyteArray) (*env)-&gt;NewByteArray(env, size);</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; (*env)-&gt;SetByteArrayRegion(env, byteArray, 0, size, callbackData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#ae7661f79a95fe7d0eaa118264431f9c2">logData</a>.str);</div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; (*env)-&gt;CallStaticVoidMethod(env, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ade6d1da5041bb8ac83ee2c50140d3649">configClass</a>, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad6ed2afe8a0e43d77b474a22fcb26252">logMethod</a>, (jlong) callbackData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#ab2f13e938142641cd8f897e0729d2aa6">executionId</a>, callbackData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a0108648839b77d246e659a7eefdde4fb">logLevel</a>, byteArray);</div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; (*env)-&gt;DeleteLocalRef(env, byteArray);</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; </div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="comment">// CLEAN LOG DATA</span></div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; av_bprint_finalize(&amp;callbackData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#ae7661f79a95fe7d0eaa118264431f9c2">logData</a>, NULL);</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; </div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; </div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="comment">// STATISTICS CALLBACK</span></div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; </div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; (*env)-&gt;CallStaticVoidMethod(env, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ade6d1da5041bb8ac83ee2c50140d3649">configClass</a>, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#afb701a25861b4bc7d008764199e39b39">statisticsMethod</a>,</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; (jlong) callbackData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#ab2f13e938142641cd8f897e0729d2aa6">executionId</a>, callbackData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a6ea1c5fbcf7ad64a04687d738a9c6559">statisticsFrameNumber</a>,</div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; callbackData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#ad4ef14e9625fe915267d644480e9410f">statisticsFps</a>, callbackData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a0eba672f8309ce08c41eeb63c48091af">statisticsQuality</a>,</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; callbackData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#aee6855bc657b56db6c8a32656b3018c4">statisticsSize</a>, callbackData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#abe4eff38e39d603bd966c554e9e5afc8">statisticsTime</a>,</div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; callbackData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a0e02eb985ed5c68bdf82a3445c0b4514">statisticsBitrate</a>, callbackData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a577a99dc4c2767d1946ac174f7a0c69e">statisticsSpeed</a>);</div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; </div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; }</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; </div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="comment">// CLEAN STRUCT</span></div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; callbackData-&gt;<a class="code" href="../../d2/dc3/struct_callback_data.html#a2e5d0fd0859aca2c5a304b4823b86ccd">next</a> = NULL;</div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; av_free(callbackData);</div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; </div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a69866f167ddff23a79c8bafc39204bae">monitorWait</a>(100);</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; }</div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; }</div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; </div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; (*globalVm)-&gt;DetachCurrentThread(<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a836d04ac8f7f51d0e6181c641eed7441">globalVm</a>);</div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; </div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#aa839997a58e14061861cd634fdb7664d">LOGD</a>(<span class="stringliteral">&quot;Callback thread stopped.\n&quot;</span>);</div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; </div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;}</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; </div>
<div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="../../dd/d16/mobileffmpeg_8c.html#ad2f07df887428c1c8e78f3c485e9c71c"> 615</a></span>&#160;jint <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad2f07df887428c1c8e78f3c485e9c71c">JNI_OnLoad</a>(JavaVM *vm, <span class="keywordtype">void</span> *reserved) {</div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; JNIEnv *env;</div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">if</span> ((*vm)-&gt;GetEnv(vm, (<span class="keywordtype">void</span>**)(&amp;env), JNI_VERSION_1_6) != JNI_OK) {</div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#ae02538a80ad5fc009caec73487d11a8d">LOGE</a>(<span class="stringliteral">&quot;OnLoad failed to GetEnv for class %s.\n&quot;</span>, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a5600185f07cb71e002b7916f2d425461">configClassName</a>);</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">return</span> JNI_FALSE;</div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; </div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; jclass localConfigClass = (*env)-&gt;FindClass(env, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a5600185f07cb71e002b7916f2d425461">configClassName</a>);</div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">if</span> (localConfigClass == NULL) {</div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#ae02538a80ad5fc009caec73487d11a8d">LOGE</a>(<span class="stringliteral">&quot;OnLoad failed to FindClass %s.\n&quot;</span>, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a5600185f07cb71e002b7916f2d425461">configClassName</a>);</div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">return</span> JNI_FALSE;</div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; </div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span> ((*env)-&gt;RegisterNatives(env, localConfigClass, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a61876b43554384a035129fe6c2bd8a52">configMethods</a>, 12) &lt; 0) {</div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#ae02538a80ad5fc009caec73487d11a8d">LOGE</a>(<span class="stringliteral">&quot;OnLoad failed to RegisterNatives for class %s.\n&quot;</span>, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a5600185f07cb71e002b7916f2d425461">configClassName</a>);</div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">return</span> JNI_FALSE;</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; }</div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; </div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; jclass localStringClass = (*env)-&gt;FindClass(env, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a601e42e4859c5e69145f77aa37da8b99">stringClassName</a>);</div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">if</span> (localStringClass == NULL) {</div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#ae02538a80ad5fc009caec73487d11a8d">LOGE</a>(<span class="stringliteral">&quot;OnLoad failed to FindClass %s.\n&quot;</span>, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a601e42e4859c5e69145f77aa37da8b99">stringClassName</a>);</div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">return</span> JNI_FALSE;</div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; }</div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; </div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; (*env)-&gt;GetJavaVM(env, &amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a836d04ac8f7f51d0e6181c641eed7441">globalVm</a>);</div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; </div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad6ed2afe8a0e43d77b474a22fcb26252">logMethod</a> = (*env)-&gt;GetStaticMethodID(env, localConfigClass, <span class="stringliteral">&quot;log&quot;</span>, <span class="stringliteral">&quot;(JI[B)V&quot;</span>);</div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad6ed2afe8a0e43d77b474a22fcb26252">logMethod</a> == NULL) {</div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#ae02538a80ad5fc009caec73487d11a8d">LOGE</a>(<span class="stringliteral">&quot;OnLoad thread failed to GetStaticMethodID for %s.\n&quot;</span>, <span class="stringliteral">&quot;log&quot;</span>);</div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">return</span> JNI_FALSE;</div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; }</div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; </div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#afb701a25861b4bc7d008764199e39b39">statisticsMethod</a> = (*env)-&gt;GetStaticMethodID(env, localConfigClass, <span class="stringliteral">&quot;statistics&quot;</span>, <span class="stringliteral">&quot;(JIFFJIDD)V&quot;</span>);</div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad6ed2afe8a0e43d77b474a22fcb26252">logMethod</a> == NULL) {</div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#ae02538a80ad5fc009caec73487d11a8d">LOGE</a>(<span class="stringliteral">&quot;OnLoad thread failed to GetStaticMethodID for %s.\n&quot;</span>, <span class="stringliteral">&quot;statistics&quot;</span>);</div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">return</span> JNI_FALSE;</div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; }</div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; </div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#af5b32fa73a2431ebd659115b54eb1513">stringConstructor</a> = (*env)-&gt;GetMethodID(env, localStringClass, <span class="stringliteral">&quot;&lt;init&gt;&quot;</span>, <span class="stringliteral">&quot;([BLjava/lang/String;)V&quot;</span>);</div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#af5b32fa73a2431ebd659115b54eb1513">stringConstructor</a> == NULL) {</div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#ae02538a80ad5fc009caec73487d11a8d">LOGE</a>(<span class="stringliteral">&quot;OnLoad thread failed to GetMethodID for %s.\n&quot;</span>, <span class="stringliteral">&quot;&lt;init&gt;&quot;</span>);</div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">return</span> JNI_FALSE;</div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; </div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; av_jni_set_java_vm(vm, NULL);</div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; </div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ade6d1da5041bb8ac83ee2c50140d3649">configClass</a> = (jclass) ((*env)-&gt;NewGlobalRef(env, localConfigClass));</div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a11af305e0be488c5236eab86b470e818">stringClass</a> = (jclass) ((*env)-&gt;NewGlobalRef(env, localStringClass));</div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; </div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aad49c603a65074ce7a5d491ce9a54eb5">redirectionEnabled</a> = 0;</div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; </div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a8e6f1679df340e6702b973d5e9af5057">callbackDataHead</a> = NULL;</div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2243f7be810d9b6ae653d381b0c5e031">callbackDataTail</a> = NULL;</div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; </div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i&lt;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a9b3526e178b82f67d04bfe97422e9c05">EXECUTION_MAP_SIZE</a>; i++) {</div>
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a747764bcf840e03ee400686bab435bb6">executionMap</a>[i] = 0;</div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; </div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aee493071e7c54d99ce5c2422d63fab37">mutexInit</a>();</div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a9e0c5c77d11961073b29c8eb7a3afd46">monitorInit</a>();</div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a922fe26598492a0117d8b89b417e7df5">logInit</a>();</div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a4bccd6ccaa41d35f4301319241fa1793">executionMapLockInit</a>();</div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; </div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">return</span> JNI_VERSION_1_6;</div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;}</div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; </div>
<div class="line"><a name="l00688"></a><span class="lineno"><a class="line" href="../../d8/da5/mobileffmpeg_8h.html#a231daf6b3157f2c276a158c7e4b53d3e"> 688</a></span>&#160;JNIEXPORT <span class="keywordtype">void</span> JNICALL <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aede930dcf5d80c598168d08b31d7dded">Java_com_arthenica_mobileffmpeg_Config_setNativeLogLevel</a>(JNIEnv *env, jclass <span class="keywordtype">object</span>, jint level) {</div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; av_log_set_level(level);</div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;}</div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; </div>
<div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="../../d8/da5/mobileffmpeg_8h.html#a54e490bc15eb2ad76f6439c2b793ddf0"> 698</a></span>&#160;JNIEXPORT jint JNICALL <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a3b4b16da8cbe6b11f895128b4e2a31ac">Java_com_arthenica_mobileffmpeg_Config_getNativeLogLevel</a>(JNIEnv *env, jclass <span class="keywordtype">object</span>) {</div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">return</span> av_log_get_level();</div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;}</div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; </div>
<div class="line"><a name="l00708"></a><span class="lineno"><a class="line" href="../../d8/da5/mobileffmpeg_8h.html#ae50207e607b00d2da3284bfb3073b81d"> 708</a></span>&#160;JNIEXPORT <span class="keywordtype">void</span> JNICALL <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a58a478f0081759684239fd9fa2037399">Java_com_arthenica_mobileffmpeg_Config_enableNativeRedirection</a>(JNIEnv *env, jclass <span class="keywordtype">object</span>) {</div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ae48265a7aeb85f80e2ff194693a4cf9a">mutexLock</a>();</div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; </div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aad49c603a65074ce7a5d491ce9a54eb5">redirectionEnabled</a> != 0) {</div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aaf4e71a99d5a6e034f605bb7b507a302">mutexUnlock</a>();</div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; }</div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aad49c603a65074ce7a5d491ce9a54eb5">redirectionEnabled</a> = 1;</div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; </div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aaf4e71a99d5a6e034f605bb7b507a302">mutexUnlock</a>();</div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; </div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordtype">int</span> rc = pthread_create(&amp;<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a8e98224bd935d38a24a6b1ed48adcc66">callbackThread</a>, 0, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a90a2d5a2a8e786429a9ce09409b8c313">callbackThreadFunction</a>, 0);</div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">if</span> (rc != 0) {</div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#ae02538a80ad5fc009caec73487d11a8d">LOGE</a>(<span class="stringliteral">&quot;Failed to create callback thread (rc=%d).\n&quot;</span>, rc);</div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; }</div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; </div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; av_log_set_callback(<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2a0b0c8c4f0496cd0ed87e183a0a493d">mobileffmpeg_log_callback_function</a>);</div>
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <a class="code" href="../../d7/d48/fftools__ffmpeg_8c.html#a4dd17285e4049bfb915b75d39ff9971e">set_report_callback</a>(<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a6eb0937147ed33c73e39f95ba9260e3e">mobileffmpeg_statistics_callback_function</a>);</div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;}</div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; </div>
<div class="line"><a name="l00735"></a><span class="lineno"><a class="line" href="../../d8/da5/mobileffmpeg_8h.html#ab10bd6b77ae73fe22daa7596a5fd0265"> 735</a></span>&#160;JNIEXPORT <span class="keywordtype">void</span> JNICALL <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a3696e05ac42c8507b50ca463bdf679c5">Java_com_arthenica_mobileffmpeg_Config_disableNativeRedirection</a>(JNIEnv *env, jclass <span class="keywordtype">object</span>) {</div>
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; </div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ae48265a7aeb85f80e2ff194693a4cf9a">mutexLock</a>();</div>
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; </div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aad49c603a65074ce7a5d491ce9a54eb5">redirectionEnabled</a> != 1) {</div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aaf4e71a99d5a6e034f605bb7b507a302">mutexUnlock</a>();</div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; }</div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aad49c603a65074ce7a5d491ce9a54eb5">redirectionEnabled</a> = 0;</div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; </div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aaf4e71a99d5a6e034f605bb7b507a302">mutexUnlock</a>();</div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; </div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; av_log_set_callback(av_log_default_callback);</div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <a class="code" href="../../d7/d48/fftools__ffmpeg_8c.html#a4dd17285e4049bfb915b75d39ff9971e">set_report_callback</a>(NULL);</div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; </div>
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a31c47b02812375efdbb56a731f027993">monitorNotify</a>();</div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;}</div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; </div>
<div class="line"><a name="l00760"></a><span class="lineno"><a class="line" href="../../d8/da5/mobileffmpeg_8h.html#a0250425604569423e8b3398dec588c87"> 760</a></span>&#160;JNIEXPORT jstring JNICALL <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad023e8da6a9d0fccf1cd1756f79348c0">Java_com_arthenica_mobileffmpeg_Config_getNativeFFmpegVersion</a>(JNIEnv *env, jclass <span class="keywordtype">object</span>) {</div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordflow">return</span> (*env)-&gt;NewStringUTF(env, FFMPEG_VERSION);</div>
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;}</div>
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; </div>
<div class="line"><a name="l00771"></a><span class="lineno"><a class="line" href="../../d8/da5/mobileffmpeg_8h.html#a6bd5582bfd016c6af95c2cfe8a9f1cec"> 771</a></span>&#160;JNIEXPORT jstring JNICALL <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#abaf625f6d3ae5c5ea25300d9c95b2655">Java_com_arthenica_mobileffmpeg_Config_getNativeVersion</a>(JNIEnv *env, jclass <span class="keywordtype">object</span>) {</div>
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">return</span> (*env)-&gt;NewStringUTF(env, <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#ab40bb25ef4ec0f35c70e84dbad36cfc2">MOBILE_FFMPEG_VERSION</a>);</div>
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;}</div>
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; </div>
<div class="line"><a name="l00784"></a><span class="lineno"><a class="line" href="../../d8/da5/mobileffmpeg_8h.html#a27c64b06e7b1ac6e12abac4653ddee33"> 784</a></span>&#160;JNIEXPORT jint JNICALL <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#adfa886d784ecd1ab17ca78d105a6018d">Java_com_arthenica_mobileffmpeg_Config_nativeFFmpegExecute</a>(JNIEnv *env, jclass <span class="keywordtype">object</span>, jlong <span class="keywordtype">id</span>, jobjectArray stringArray) {</div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; jstring *tempArray = NULL;</div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordtype">int</span> argumentCount = 1;</div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keywordtype">char</span> **argv = NULL;</div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; </div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">if</span> (stringArray != NULL) {</div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordtype">int</span> programArgumentCount = (*env)-&gt;GetArrayLength(env, stringArray);</div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; argumentCount = programArgumentCount + 1;</div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; </div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; tempArray = (jstring *) av_malloc(<span class="keyword">sizeof</span>(jstring) * programArgumentCount);</div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; </div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="comment">/* PRESERVE USAGE FORMAT</span></div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;<span class="comment"> * ffmpeg &lt;arguments&gt;</span></div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; argv = (<span class="keywordtype">char</span> **)av_malloc(<span class="keyword">sizeof</span>(<span class="keywordtype">char</span>*) * (argumentCount));</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; argv[0] = (<span class="keywordtype">char</span> *)av_malloc(<span class="keyword">sizeof</span>(<span class="keywordtype">char</span>) * (strlen(<a class="code" href="../../d8/da5/mobileffmpeg_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>) + 1));</div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; strcpy(argv[0], <a class="code" href="../../d8/da5/mobileffmpeg_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>);</div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; </div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="comment">// PREPARE</span></div>
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keywordflow">if</span> (stringArray != NULL) {</div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; (argumentCount - 1); i++) {</div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; tempArray[i] = (jstring) (*env)-&gt;GetObjectArrayElement(env, stringArray, i);</div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">if</span> (tempArray[i] != NULL) {</div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; argv[i + 1] = (<span class="keywordtype">char</span> *) (*env)-&gt;GetStringUTFChars(env, tempArray[i], 0);</div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; }</div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; }</div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; }</div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; </div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="comment">// LAST COMMAND OUTPUT SHOULD BE CLEARED BEFORE STARTING A NEW EXECUTION</span></div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a40ae83f55a0381052220ce40531471c7">clearLastCommandOutput</a>();</div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; </div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="comment">// REGISTER THE ID BEFORE STARTING EXECUTION</span></div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a97214549fe2d40f7420cc64ac122f670">executionId</a> = (long) <span class="keywordtype">id</span>;</div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a6f78a97a58db09a4baa833fdb45dbd63">addExecution</a>((<span class="keywordtype">long</span>) <span class="keywordtype">id</span>);</div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; </div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="comment">// RUN</span></div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordtype">int</span> retCode = <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#af42fc9da8015a216f63c1c993d5c1571">ffmpeg_execute</a>(argumentCount, argv);</div>
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; </div>
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="comment">// ALWAYS REMOVE THE ID FROM THE MAP</span></div>
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#af7158d712e8854ad8c2f50d79187f1a1">removeExecution</a>((<span class="keywordtype">long</span>) <span class="keywordtype">id</span>);</div>
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; </div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="comment">// CLEANUP</span></div>
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">if</span> (tempArray != NULL) {</div>
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; (argumentCount - 1); i++) {</div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; (*env)-&gt;ReleaseStringUTFChars(env, tempArray[i], argv[i + 1]);</div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; }</div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; </div>
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; av_free(tempArray);</div>
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; }</div>
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; av_free(argv[0]);</div>
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; av_free(argv);</div>
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; </div>
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordflow">return</span> retCode;</div>
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;}</div>
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; </div>
<div class="line"><a name="l00848"></a><span class="lineno"><a class="line" href="../../d8/da5/mobileffmpeg_8h.html#afe8a8a78843442e1da4f76d2b2b8d3cb"> 848</a></span>&#160;JNIEXPORT <span class="keywordtype">void</span> JNICALL <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a033de66d12e3e0f4a59406b63ca58aa6">Java_com_arthenica_mobileffmpeg_Config_nativeFFmpegCancel</a>(JNIEnv *env, jclass <span class="keywordtype">object</span>, jlong <span class="keywordtype">id</span>) {</div>
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <a class="code" href="../../d7/d48/fftools__ffmpeg_8c.html#a85d242f177c5dc68d5808adc5e594b92">cancel_operation</a>(<span class="keywordtype">id</span>);</div>
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160;}</div>
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; </div>
<div class="line"><a name="l00860"></a><span class="lineno"><a class="line" href="../../d8/da5/mobileffmpeg_8h.html#a354a4916904d5a0d7297587c93c9445d"> 860</a></span>&#160;JNIEXPORT <span class="keywordtype">int</span> JNICALL <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a354a4916904d5a0d7297587c93c9445d">Java_com_arthenica_mobileffmpeg_Config_registerNewNativeFFmpegPipe</a>(JNIEnv *env, jclass <span class="keywordtype">object</span>, jstring ffmpegPipePath) {</div>
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *ffmpegPipePathString = (*env)-&gt;GetStringUTFChars(env, ffmpegPipePath, 0);</div>
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; </div>
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">return</span> mkfifo(ffmpegPipePathString, S_IRWXU | S_IRWXG | S_IROTH);</div>
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;}</div>
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; </div>
<div class="line"><a name="l00873"></a><span class="lineno"><a class="line" href="../../d8/da5/mobileffmpeg_8h.html#a0f3609b9b8c71abc3c4259d8e0ebadd6"> 873</a></span>&#160;JNIEXPORT jstring JNICALL <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a0f3609b9b8c71abc3c4259d8e0ebadd6">Java_com_arthenica_mobileffmpeg_Config_getNativeBuildDate</a>(JNIEnv *env, jclass <span class="keywordtype">object</span>) {</div>
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordtype">char</span> buildDate[10];</div>
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; sprintf(buildDate, <span class="stringliteral">&quot;%d&quot;</span>, MOBILE_FFMPEG_BUILD_DATE);</div>
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">return</span> (*env)-&gt;NewStringUTF(env, buildDate);</div>
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;}</div>
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; </div>
<div class="line"><a name="l00888"></a><span class="lineno"><a class="line" href="../../d8/da5/mobileffmpeg_8h.html#a2585365fde149d00dc05a2d1a8ecb8d5"> 888</a></span>&#160;JNIEXPORT <span class="keywordtype">int</span> JNICALL <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a2585365fde149d00dc05a2d1a8ecb8d5">Java_com_arthenica_mobileffmpeg_Config_setNativeEnvironmentVariable</a>(JNIEnv *env, jclass <span class="keywordtype">object</span>, jstring variableName, jstring variableValue) {</div>
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *variableNameString = (*env)-&gt;GetStringUTFChars(env, variableName, 0);</div>
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *variableValueString = (*env)-&gt;GetStringUTFChars(env, variableValue, 0);</div>
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; </div>
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordtype">int</span> rc = setenv(variableNameString, variableValueString, 1);</div>
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; </div>
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; (*env)-&gt;ReleaseStringUTFChars(env, variableName, variableNameString);</div>
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; (*env)-&gt;ReleaseStringUTFChars(env, variableValue, variableValueString);</div>
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keywordflow">return</span> rc;</div>
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160;}</div>
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; </div>
<div class="line"><a name="l00906"></a><span class="lineno"><a class="line" href="../../d8/da5/mobileffmpeg_8h.html#ac2143e2edc13f36da64376fdc488e486"> 906</a></span>&#160;JNIEXPORT jstring JNICALL <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ac2143e2edc13f36da64376fdc488e486">Java_com_arthenica_mobileffmpeg_Config_getNativeLastCommandOutput</a>(JNIEnv *env, jclass <span class="keywordtype">object</span>) {</div>
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordtype">int</span> size = <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aca9480e40064f33dc4cae39120d2fae8">lastCommandOutput</a>.len;</div>
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="keywordflow">if</span> (size &gt; 0) {</div>
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; jbyteArray byteArray = (*env)-&gt;NewByteArray(env, size);</div>
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; (*env)-&gt;SetByteArrayRegion(env, byteArray, 0, size, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#aca9480e40064f33dc4cae39120d2fae8">lastCommandOutput</a>.str);</div>
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; jstring charsetName = (*env)-&gt;NewStringUTF(env, <span class="stringliteral">&quot;UTF-8&quot;</span>);</div>
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">return</span> (jstring) (*env)-&gt;NewObject(env, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a11af305e0be488c5236eab86b470e818">stringClass</a>, <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#af5b32fa73a2431ebd659115b54eb1513">stringConstructor</a>, byteArray, charsetName);</div>
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; }</div>
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; </div>
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">return</span> (*env)-&gt;NewStringUTF(env, <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;}</div>
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; </div>
<div class="line"><a name="l00925"></a><span class="lineno"><a class="line" href="../../d8/da5/mobileffmpeg_8h.html#af62f41850d27f6ee3dc4a7f1a7705a3d"> 925</a></span>&#160;JNIEXPORT <span class="keywordtype">void</span> JNICALL <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#af62f41850d27f6ee3dc4a7f1a7705a3d">Java_com_arthenica_mobileffmpeg_Config_ignoreNativeSignal</a>(JNIEnv *env, jclass <span class="keywordtype">object</span>, jint signum) {</div>
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">if</span> (signum == SIGQUIT) {</div>
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#afbd89b768ade5ebb57205d8346acaa03">handleSIGQUIT</a> = 0;</div>
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (signum == SIGINT) {</div>
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a43764cf85b951e6e0d9cc6f74e24c721">handleSIGINT</a> = 0;</div>
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (signum == SIGTERM) {</div>
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#a4c48fbb1622eb5a5a7d31d1f9c2c9447">handleSIGTERM</a> = 0;</div>
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (signum == SIGXCPU) {</div>
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#ad8148e9f47355623f9ad3c1578844cd3">handleSIGXCPU</a> = 0;</div>
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (signum == SIGPIPE) {</div>
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <a class="code" href="../../dd/d16/mobileffmpeg_8c.html#acd19ea38bd4b2ebb549ed4630bdca918">handleSIGPIPE</a> = 0;</div>
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; }</div>
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="amobileffmpeg_8c_html_a31c47b02812375efdbb56a731f027993"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a31c47b02812375efdbb56a731f027993">monitorNotify</a></div><div class="ttdeci">void monitorNotify()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00312">mobileffmpeg.c:312</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a9e0c5c77d11961073b29c8eb7a3afd46"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a9e0c5c77d11961073b29c8eb7a3afd46">monitorInit</a></div><div class="ttdeci">void monitorInit()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00199">mobileffmpeg.c:199</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_af62f41850d27f6ee3dc4a7f1a7705a3d"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#af62f41850d27f6ee3dc4a7f1a7705a3d">Java_com_arthenica_mobileffmpeg_Config_ignoreNativeSignal</a></div><div class="ttdeci">JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_ignoreNativeSignal(JNIEnv *env, jclass object, jint signum)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00925">mobileffmpeg.c:925</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_afb701a25861b4bc7d008764199e39b39"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#afb701a25861b4bc7d008764199e39b39">statisticsMethod</a></div><div class="ttdeci">static jmethodID statisticsMethod</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00080">mobileffmpeg.c:80</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_ade6d1da5041bb8ac83ee2c50140d3649"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#ade6d1da5041bb8ac83ee2c50140d3649">configClass</a></div><div class="ttdeci">static jclass configClass</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00074">mobileffmpeg.c:74</a></div></div>
<div class="ttc" id="amobileffprobe_8h_html"><div class="ttname"><a href="../../dd/dbd/mobileffprobe_8h.html">mobileffprobe.h</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a922fe26598492a0117d8b89b417e7df5"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a922fe26598492a0117d8b89b417e7df5">logInit</a></div><div class="ttdeci">void logInit()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00215">mobileffmpeg.c:215</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a2585365fde149d00dc05a2d1a8ecb8d5"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a2585365fde149d00dc05a2d1a8ecb8d5">Java_com_arthenica_mobileffmpeg_Config_setNativeEnvironmentVariable</a></div><div class="ttdeci">JNIEXPORT int JNICALL Java_com_arthenica_mobileffmpeg_Config_setNativeEnvironmentVariable(JNIEnv *env, jclass object, jstring variableName, jstring variableValue)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00888">mobileffmpeg.c:888</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a30047bcfe52a18b75cc67967fcb999db"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a30047bcfe52a18b75cc67967fcb999db">logMutex</a></div><div class="ttdeci">static pthread_mutex_t logMutex</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00061">mobileffmpeg.c:61</a></div></div>
<div class="ttc" id="astruct_callback_data_html_ae7661f79a95fe7d0eaa118264431f9c2"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#ae7661f79a95fe7d0eaa118264431f9c2">CallbackData::logData</a></div><div class="ttdeci">AVBPrint logData</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00037">mobileffmpeg.c:37</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_af07a333fd742b900a75df60d27b1f3f6"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#af07a333fd742b900a75df60d27b1f3f6">executionMapLockUnInit</a></div><div class="ttdeci">void executionMapLockUnInit()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00248">mobileffmpeg.c:248</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a58a478f0081759684239fd9fa2037399"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a58a478f0081759684239fd9fa2037399">Java_com_arthenica_mobileffmpeg_Config_enableNativeRedirection</a></div><div class="ttdeci">JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_enableNativeRedirection(JNIEnv *env, jclass object)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00708">mobileffmpeg.c:708</a></div></div>
<div class="ttc" id="afftools__ffmpeg_8h_html"><div class="ttname"><a href="../../d7/db3/fftools__ffmpeg_8h.html">fftools_ffmpeg.h</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_ac2143e2edc13f36da64376fdc488e486"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#ac2143e2edc13f36da64376fdc488e486">Java_com_arthenica_mobileffmpeg_Config_getNativeLastCommandOutput</a></div><div class="ttdeci">JNIEXPORT jstring JNICALL Java_com_arthenica_mobileffmpeg_Config_getNativeLastCommandOutput(JNIEnv *env, jclass object)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00906">mobileffmpeg.c:906</a></div></div>
<div class="ttc" id="astruct_callback_data_html_a0108648839b77d246e659a7eefdde4fb"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#a0108648839b77d246e659a7eefdde4fb">CallbackData::logLevel</a></div><div class="ttdeci">int logLevel</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00036">mobileffmpeg.c:36</a></div></div>
<div class="ttc" id="astruct_callback_data_html_a6ea1c5fbcf7ad64a04687d738a9c6559"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#a6ea1c5fbcf7ad64a04687d738a9c6559">CallbackData::statisticsFrameNumber</a></div><div class="ttdeci">int statisticsFrameNumber</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00039">mobileffmpeg.c:39</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a5600185f07cb71e002b7916f2d425461"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a5600185f07cb71e002b7916f2d425461">configClassName</a></div><div class="ttdeci">const char * configClassName</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00089">mobileffmpeg.c:89</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a4c48fbb1622eb5a5a7d31d1f9c2c9447"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a4c48fbb1622eb5a5a7d31d1f9c2c9447">handleSIGTERM</a></div><div class="ttdeci">volatile int handleSIGTERM</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00097">mobileffmpeg.c:97</a></div></div>
<div class="ttc" id="astruct_callback_data_html_a577a99dc4c2767d1946ac174f7a0c69e"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#a577a99dc4c2767d1946ac174f7a0c69e">CallbackData::statisticsSpeed</a></div><div class="ttdeci">double statisticsSpeed</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00045">mobileffmpeg.c:45</a></div></div>
<div class="ttc" id="afftools__ffmpeg_8c_html_a4dd17285e4049bfb915b75d39ff9971e"><div class="ttname"><a href="../../d7/d48/fftools__ffmpeg_8c.html#a4dd17285e4049bfb915b75d39ff9971e">set_report_callback</a></div><div class="ttdeci">void set_report_callback(void(*callback)(int, float, float, int64_t, int, double, double))</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d48/fftools__ffmpeg_8c_source.html#l05054">fftools_ffmpeg.c:5054</a></div></div>
<div class="ttc" id="afftools__ffmpeg_8c_html_a85d242f177c5dc68d5808adc5e594b92"><div class="ttname"><a href="../../d7/d48/fftools__ffmpeg_8c.html#a85d242f177c5dc68d5808adc5e594b92">cancel_operation</a></div><div class="ttdeci">void cancel_operation(long id)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d48/fftools__ffmpeg_8c_source.html#l05059">fftools_ffmpeg.c:5059</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a8e6f1679df340e6702b973d5e9af5057"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a8e6f1679df340e6702b973d5e9af5057">callbackDataHead</a></div><div class="ttdeci">struct CallbackData * callbackDataHead</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00067">mobileffmpeg.c:67</a></div></div>
<div class="ttc" id="amobileffmpeg_8h_html_ae02538a80ad5fc009caec73487d11a8d"><div class="ttname"><a href="../../d8/da5/mobileffmpeg_8h.html#ae02538a80ad5fc009caec73487d11a8d">LOGE</a></div><div class="ttdeci">#define LOGE(...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/da5/mobileffmpeg_8h_source.html#l00049">mobileffmpeg.h:48</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_aede930dcf5d80c598168d08b31d7dded"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#aede930dcf5d80c598168d08b31d7dded">Java_com_arthenica_mobileffmpeg_Config_setNativeLogLevel</a></div><div class="ttdeci">JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_setNativeLogLevel(JNIEnv *env, jclass object, jint level)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00688">mobileffmpeg.c:688</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a4bccd6ccaa41d35f4301319241fa1793"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a4bccd6ccaa41d35f4301319241fa1793">executionMapLockInit</a></div><div class="ttdeci">void executionMapLockInit()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00226">mobileffmpeg.c:226</a></div></div>
<div class="ttc" id="afftools__ffprobe_8c_html_a3bd1ad5edf8fc93f783af77e8cd6ee9a"><div class="ttname"><a href="../../d8/d78/fftools__ffprobe_8c.html#a3bd1ad5edf8fc93f783af77e8cd6ee9a">pthread_mutex_lock</a></div><div class="ttdeci">#define pthread_mutex_lock(a)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d78/fftools__ffprobe_8c_source.html#l00070">fftools_ffprobe.c:69</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a6f78a97a58db09a4baa833fdb45dbd63"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a6f78a97a58db09a4baa833fdb45dbd63">addExecution</a></div><div class="ttdeci">void addExecution(long id)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00405">mobileffmpeg.c:405</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_aad49c603a65074ce7a5d491ce9a54eb5"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#aad49c603a65074ce7a5d491ce9a54eb5">redirectionEnabled</a></div><div class="ttdeci">int redirectionEnabled</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00065">mobileffmpeg.c:65</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a79ffcbbb0cbbf5775dcc5527874b3b5e"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a79ffcbbb0cbbf5775dcc5527874b3b5e">executionMapLock</a></div><div class="ttdeci">void executionMapLock()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00260">mobileffmpeg.c:260</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a2484bb50e3452a055a3a402e4e95c91d"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a2484bb50e3452a055a3a402e4e95c91d">logUnInit</a></div><div class="ttdeci">void logUnInit()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00244">mobileffmpeg.c:244</a></div></div>
<div class="ttc" id="astruct_callback_data_html_a2e5d0fd0859aca2c5a304b4823b86ccd"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#a2e5d0fd0859aca2c5a304b4823b86ccd">CallbackData::next</a></div><div class="ttdeci">struct CallbackData * next</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00047">mobileffmpeg.c:47</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_aa4efb909db64505dd9b14ce9eed06569"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#aa4efb909db64505dd9b14ce9eed06569">executionMapUnlock</a></div><div class="ttdeci">void executionMapUnlock()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00272">mobileffmpeg.c:272</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_aada08ab4f0a4e8ca6b7502737c057ca9"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#aada08ab4f0a4e8ca6b7502737c057ca9">cancelRequested</a></div><div class="ttdeci">int cancelRequested(long id)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00466">mobileffmpeg.c:466</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a40ae83f55a0381052220ce40531471c7"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a40ae83f55a0381052220ce40531471c7">clearLastCommandOutput</a></div><div class="ttdeci">void clearLastCommandOutput()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00276">mobileffmpeg.c:276</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_afbe8c61b2fd9575361f83f73a55b3c62"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#afbe8c61b2fd9575361f83f73a55b3c62">logCallbackDataAdd</a></div><div class="ttdeci">void logCallbackDataAdd(int level, AVBPrint *data)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00324">mobileffmpeg.c:324</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_ad8148e9f47355623f9ad3c1578844cd3"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#ad8148e9f47355623f9ad3c1578844cd3">handleSIGXCPU</a></div><div class="ttdeci">volatile int handleSIGXCPU</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00098">mobileffmpeg.c:98</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_af42fc9da8015a216f63c1c993d5c1571"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#af42fc9da8015a216f63c1c993d5c1571">ffmpeg_execute</a></div><div class="ttdeci">int ffmpeg_execute(int argc, char **argv)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d48/fftools__ffmpeg_8c_source.html#l05070">fftools_ffmpeg.c:5070</a></div></div>
<div class="ttc" id="amobileffmpeg_8h_html_aa839997a58e14061861cd634fdb7664d"><div class="ttname"><a href="../../d8/da5/mobileffmpeg_8h.html#aa839997a58e14061861cd634fdb7664d">LOGD</a></div><div class="ttdeci">#define LOGD(...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/da5/mobileffmpeg_8h_source.html#l00040">mobileffmpeg.h:39</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_ad023e8da6a9d0fccf1cd1756f79348c0"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#ad023e8da6a9d0fccf1cd1756f79348c0">Java_com_arthenica_mobileffmpeg_Config_getNativeFFmpegVersion</a></div><div class="ttdeci">JNIEXPORT jstring JNICALL Java_com_arthenica_mobileffmpeg_Config_getNativeFFmpegVersion(JNIEnv *env, jclass object)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00760">mobileffmpeg.c:760</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a0017ed2d6f2be362f57b10e7674fc291"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a0017ed2d6f2be362f57b10e7674fc291">monitorUnInit</a></div><div class="ttdeci">void monitorUnInit()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00239">mobileffmpeg.c:239</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_af5b32fa73a2431ebd659115b54eb1513"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#af5b32fa73a2431ebd659115b54eb1513">stringConstructor</a></div><div class="ttdeci">static jmethodID stringConstructor</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00086">mobileffmpeg.c:86</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_adfa886d784ecd1ab17ca78d105a6018d"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#adfa886d784ecd1ab17ca78d105a6018d">Java_com_arthenica_mobileffmpeg_Config_nativeFFmpegExecute</a></div><div class="ttdeci">JNIEXPORT jint JNICALL Java_com_arthenica_mobileffmpeg_Config_nativeFFmpegExecute(JNIEnv *env, jclass object, jlong id, jobjectArray stringArray)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00784">mobileffmpeg.c:784</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a11af305e0be488c5236eab86b470e818"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a11af305e0be488c5236eab86b470e818">stringClass</a></div><div class="ttdeci">static jclass stringClass</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00083">mobileffmpeg.c:83</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a6eb0937147ed33c73e39f95ba9260e3e"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a6eb0937147ed33c73e39f95ba9260e3e">mobileffmpeg_statistics_callback_function</a></div><div class="ttdeci">void mobileffmpeg_statistics_callback_function(int frameNumber, float fps, float quality, int64_t size, int time, double bitrate, double speed)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00538">mobileffmpeg.c:538</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a43764cf85b951e6e0d9cc6f74e24c721"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a43764cf85b951e6e0d9cc6f74e24c721">handleSIGINT</a></div><div class="ttdeci">volatile int handleSIGINT</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00096">mobileffmpeg.c:96</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_afcbebcb2971b24e9601eb99d5411cb1b"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#afcbebcb2971b24e9601eb99d5411cb1b">avutil_log_get_level_str</a></div><div class="ttdeci">static const char * avutil_log_get_level_str(int level)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00125">mobileffmpeg.c:125</a></div></div>
<div class="ttc" id="astruct_callback_data_html_abe4eff38e39d603bd966c554e9e5afc8"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#abe4eff38e39d603bd966c554e9e5afc8">CallbackData::statisticsTime</a></div><div class="ttdeci">int statisticsTime</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00043">mobileffmpeg.c:43</a></div></div>
<div class="ttc" id="astruct_callback_data_html_ab2f13e938142641cd8f897e0729d2aa6"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#ab2f13e938142641cd8f897e0729d2aa6">CallbackData::executionId</a></div><div class="ttdeci">long executionId</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00034">mobileffmpeg.c:34</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a61876b43554384a035129fe6c2bd8a52"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a61876b43554384a035129fe6c2bd8a52">configMethods</a></div><div class="ttdeci">JNINativeMethod configMethods[]</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00105">mobileffmpeg.c:105</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_ad2f07df887428c1c8e78f3c485e9c71c"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#ad2f07df887428c1c8e78f3c485e9c71c">JNI_OnLoad</a></div><div class="ttdeci">jint JNI_OnLoad(JavaVM *vm, void *reserved)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00615">mobileffmpeg.c:615</a></div></div>
<div class="ttc" id="amobileffmpeg_8h_html"><div class="ttname"><a href="../../d8/da5/mobileffmpeg_8h.html">mobileffmpeg.h</a></div></div>
<div class="ttc" id="astruct_callback_data_html_a0eba672f8309ce08c41eeb63c48091af"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#a0eba672f8309ce08c41eeb63c48091af">CallbackData::statisticsQuality</a></div><div class="ttdeci">float statisticsQuality</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00041">mobileffmpeg.c:41</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a3b4b16da8cbe6b11f895128b4e2a31ac"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a3b4b16da8cbe6b11f895128b4e2a31ac">Java_com_arthenica_mobileffmpeg_Config_getNativeLogLevel</a></div><div class="ttdeci">JNIEXPORT jint JNICALL Java_com_arthenica_mobileffmpeg_Config_getNativeLogLevel(JNIEnv *env, jclass object)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00698">mobileffmpeg.c:698</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_afbd89b768ade5ebb57205d8346acaa03"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#afbd89b768ade5ebb57205d8346acaa03">handleSIGQUIT</a></div><div class="ttdeci">volatile int handleSIGQUIT</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00095">mobileffmpeg.c:95</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a51cc94c99ed2f9d13d7719ed0b2bd61d"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a51cc94c99ed2f9d13d7719ed0b2bd61d">lastCommandOutputUnlock</a></div><div class="ttdeci">void lastCommandOutputUnlock()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00268">mobileffmpeg.c:268</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_ab511b1fdc2c94e1c7dac8fa2473ee94f"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#ab511b1fdc2c94e1c7dac8fa2473ee94f">mutexUnInit</a></div><div class="ttdeci">void mutexUnInit()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00235">mobileffmpeg.c:235</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a17cd8cde8b9e93de98e6423595f79be4"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a17cd8cde8b9e93de98e6423595f79be4">lockMutex</a></div><div class="ttdeci">static pthread_mutex_t lockMutex</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00056">mobileffmpeg.c:56</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_aaf4e71a99d5a6e034f605bb7b507a302"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#aaf4e71a99d5a6e034f605bb7b507a302">mutexUnlock</a></div><div class="ttdeci">void mutexUnlock()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00264">mobileffmpeg.c:264</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a033de66d12e3e0f4a59406b63ca58aa6"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a033de66d12e3e0f4a59406b63ca58aa6">Java_com_arthenica_mobileffmpeg_Config_nativeFFmpegCancel</a></div><div class="ttdeci">JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_nativeFFmpegCancel(JNIEnv *env, jclass object, jlong id)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00848">mobileffmpeg.c:848</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a9985bec8e575d918f2910c195a89d0c7"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a9985bec8e575d918f2910c195a89d0c7">monitorCondition</a></div><div class="ttdeci">static pthread_cond_t monitorCondition</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00058">mobileffmpeg.c:58</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_aa96f996dfe48ae6115d32546642bb106"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#aa96f996dfe48ae6115d32546642bb106">callbackDataRemove</a></div><div class="ttdeci">struct CallbackData * callbackDataRemove()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00417">mobileffmpeg.c:417</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a90a2d5a2a8e786429a9ce09409b8c313"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a90a2d5a2a8e786429a9ce09409b8c313">callbackThreadFunction</a></div><div class="ttdeci">void * callbackThreadFunction()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00545">mobileffmpeg.c:545</a></div></div>
<div class="ttc" id="astruct_callback_data_html"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html">CallbackData</a></div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00032">mobileffmpeg.c:32</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a5f5082a8a3faf4573f6b11934b50af3a"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a5f5082a8a3faf4573f6b11934b50af3a">statisticsCallbackDataAdd</a></div><div class="ttdeci">void statisticsCallbackDataAdd(int frameNumber, float fps, float quality, int64_t size, int time, double bitrate, double speed)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00361">mobileffmpeg.c:361</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a2243f7be810d9b6ae653d381b0c5e031"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a2243f7be810d9b6ae653d381b0c5e031">callbackDataTail</a></div><div class="ttdeci">struct CallbackData * callbackDataTail</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00068">mobileffmpeg.c:68</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a632891572be1648c03646028e8bfcac1"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a632891572be1648c03646028e8bfcac1">AV_LOG_STDERR</a></div><div class="ttdeci">#define AV_LOG_STDERR</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00062">fftools_cmdutils.h:61</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_af7158d712e8854ad8c2f50d79187f1a1"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#af7158d712e8854ad8c2f50d79187f1a1">removeExecution</a></div><div class="ttdeci">void removeExecution(long id)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00451">mobileffmpeg.c:451</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a0f3609b9b8c71abc3c4259d8e0ebadd6"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a0f3609b9b8c71abc3c4259d8e0ebadd6">Java_com_arthenica_mobileffmpeg_Config_getNativeBuildDate</a></div><div class="ttdeci">JNIEXPORT jstring JNICALL Java_com_arthenica_mobileffmpeg_Config_getNativeBuildDate(JNIEnv *env, jclass object)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00873">mobileffmpeg.c:873</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a2a0b0c8c4f0496cd0ed87e183a0a493d"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_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#l00489">mobileffmpeg.c:489</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_ad6eaa7c3d683c6a58bb16874dcd8be54"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#ad6eaa7c3d683c6a58bb16874dcd8be54">appendLastCommandOutput</a></div><div class="ttdeci">void appendLastCommandOutput(AVBPrint *logMessage)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00282">mobileffmpeg.c:282</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_acd19ea38bd4b2ebb549ed4630bdca918"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#acd19ea38bd4b2ebb549ed4630bdca918">handleSIGPIPE</a></div><div class="ttdeci">volatile int handleSIGPIPE</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00099">mobileffmpeg.c:99</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a9b3526e178b82f67d04bfe97422e9c05"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a9b3526e178b82f67d04bfe97422e9c05">EXECUTION_MAP_SIZE</a></div><div class="ttdeci">const int EXECUTION_MAP_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00051">mobileffmpeg.c:51</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a747764bcf840e03ee400686bab435bb6"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a747764bcf840e03ee400686bab435bb6">executionMap</a></div><div class="ttdeci">static volatile int executionMap[EXECUTION_MAP_SIZE]</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00052">mobileffmpeg.c:52</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a97214549fe2d40f7420cc64ac122f670"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a97214549fe2d40f7420cc64ac122f670">executionId</a></div><div class="ttdeci">__thread volatile long executionId</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00102">mobileffmpeg.c:102</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a5a741178aa9707f94a3ed21dc9199563"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a5a741178aa9707f94a3ed21dc9199563">avutil_log_format_line</a></div><div class="ttdeci">static void avutil_log_format_line(void *avcl, int level, const char *fmt, va_list vl, AVBPrint part[4], int *print_prefix)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00150">mobileffmpeg.c:150</a></div></div>
<div class="ttc" id="astruct_callback_data_html_aee6855bc657b56db6c8a32656b3018c4"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#aee6855bc657b56db6c8a32656b3018c4">CallbackData::statisticsSize</a></div><div class="ttdeci">int64_t statisticsSize</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00042">mobileffmpeg.c:42</a></div></div>
<div class="ttc" id="astruct_callback_data_html_a0e02eb985ed5c68bdf82a3445c0b4514"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#a0e02eb985ed5c68bdf82a3445c0b4514">CallbackData::statisticsBitrate</a></div><div class="ttdeci">double statisticsBitrate</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00044">mobileffmpeg.c:44</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a69866f167ddff23a79c8bafc39204bae"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a69866f167ddff23a79c8bafc39204bae">monitorWait</a></div><div class="ttdeci">void monitorWait(int milliSeconds)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00292">mobileffmpeg.c:292</a></div></div>
<div class="ttc" id="amobileffmpeg_8h_html_a6e43beaa714b1bf01ce2271440786e38"><div class="ttname"><a href="../../d8/da5/mobileffmpeg_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a></div><div class="ttdeci">#define LIB_NAME</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/da5/mobileffmpeg_8h_source.html#l00034">mobileffmpeg.h:33</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a3696e05ac42c8507b50ca463bdf679c5"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a3696e05ac42c8507b50ca463bdf679c5">Java_com_arthenica_mobileffmpeg_Config_disableNativeRedirection</a></div><div class="ttdeci">JNIEXPORT void JNICALL Java_com_arthenica_mobileffmpeg_Config_disableNativeRedirection(JNIEnv *env, jclass object)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00735">mobileffmpeg.c:735</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_aee493071e7c54d99ce5c2422d63fab37"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#aee493071e7c54d99ce5c2422d63fab37">mutexInit</a></div><div class="ttdeci">void mutexInit()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00190">mobileffmpeg.c:190</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_aca9480e40064f33dc4cae39120d2fae8"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#aca9480e40064f33dc4cae39120d2fae8">lastCommandOutput</a></div><div class="ttdeci">static AVBPrint lastCommandOutput</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00062">mobileffmpeg.c:62</a></div></div>
<div class="ttc" id="astruct_callback_data_html_ad4ef14e9625fe915267d644480e9410f"><div class="ttname"><a href="../../d2/dc3/struct_callback_data.html#ad4ef14e9625fe915267d644480e9410f">CallbackData::statisticsFps</a></div><div class="ttdeci">float statisticsFps</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00040">mobileffmpeg.c:40</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_abaf625f6d3ae5c5ea25300d9c95b2655"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#abaf625f6d3ae5c5ea25300d9c95b2655">Java_com_arthenica_mobileffmpeg_Config_getNativeVersion</a></div><div class="ttdeci">JNIEXPORT jstring JNICALL Java_com_arthenica_mobileffmpeg_Config_getNativeVersion(JNIEnv *env, jclass object)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00771">mobileffmpeg.c:771</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a6d92b6f672ac59598aed22ca9a0c1bc6"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a6d92b6f672ac59598aed22ca9a0c1bc6">lastCommandOutputLock</a></div><div class="ttdeci">void lastCommandOutputLock()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00256">mobileffmpeg.c:256</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a8e98224bd935d38a24a6b1ed48adcc66"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a8e98224bd935d38a24a6b1ed48adcc66">callbackThread</a></div><div class="ttdeci">pthread_t callbackThread</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00064">mobileffmpeg.c:64</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a354a4916904d5a0d7297587c93c9445d"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a354a4916904d5a0d7297587c93c9445d">Java_com_arthenica_mobileffmpeg_Config_registerNewNativeFFmpegPipe</a></div><div class="ttdeci">JNIEXPORT int JNICALL Java_com_arthenica_mobileffmpeg_Config_registerNewNativeFFmpegPipe(JNIEnv *env, jclass object, jstring ffmpegPipePath)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00860">mobileffmpeg.c:860</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_ad2c255b69a5008c1ac7df0201eb9f7bc"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#ad2c255b69a5008c1ac7df0201eb9f7bc">monitorMutex</a></div><div class="ttdeci">static pthread_mutex_t monitorMutex</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00057">mobileffmpeg.c:57</a></div></div>
<div class="ttc" id="amobileffmpeg_8h_html_ab40bb25ef4ec0f35c70e84dbad36cfc2"><div class="ttname"><a href="../../d8/da5/mobileffmpeg_8h.html#ab40bb25ef4ec0f35c70e84dbad36cfc2">MOBILE_FFMPEG_VERSION</a></div><div class="ttdeci">#define MOBILE_FFMPEG_VERSION</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/da5/mobileffmpeg_8h_source.html#l00031">mobileffmpeg.h:30</a></div></div>
<div class="ttc" id="amobileffprobe_8c_html_a35a6177aba4f7fb1ee2d4014aba78593"><div class="ttname"><a href="../../d5/dae/mobileffprobe_8c.html#a35a6177aba4f7fb1ee2d4014aba78593">Java_com_arthenica_mobileffmpeg_Config_nativeFFprobeExecute</a></div><div class="ttdeci">JNIEXPORT jint JNICALL Java_com_arthenica_mobileffmpeg_Config_nativeFFprobeExecute(JNIEnv *env, jclass object, jobjectArray stringArray)</div><div class="ttdef"><b>Definition:</b> <a href="../../d5/dae/mobileffprobe_8c_source.html#l00043">mobileffprobe.c:43</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a601e42e4859c5e69145f77aa37da8b99"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a601e42e4859c5e69145f77aa37da8b99">stringClassName</a></div><div class="ttdeci">const char * stringClassName</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00092">mobileffmpeg.c:92</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_ad6ed2afe8a0e43d77b474a22fcb26252"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#ad6ed2afe8a0e43d77b474a22fcb26252">logMethod</a></div><div class="ttdeci">static jmethodID logMethod</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00077">mobileffmpeg.c:77</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a3b2d7de73a28413df1205f881542ed5b"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a3b2d7de73a28413df1205f881542ed5b">avutil_log_sanitize</a></div><div class="ttdeci">static void avutil_log_sanitize(uint8_t *line)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00182">mobileffmpeg.c:182</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a179b0d4fd046229942a9dadce29cdefb"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a179b0d4fd046229942a9dadce29cdefb">executionMapMutex</a></div><div class="ttdeci">static pthread_mutex_t executionMapMutex</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00053">mobileffmpeg.c:53</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_a836d04ac8f7f51d0e6181c641eed7441"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#a836d04ac8f7f51d0e6181c641eed7441">globalVm</a></div><div class="ttdeci">static JavaVM * globalVm</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00071">mobileffmpeg.c:71</a></div></div>
<div class="ttc" id="afftools__ffprobe_8c_html_aa91b7ec8ae8a2d699fb09cc20c444fe8"><div class="ttname"><a href="../../d8/d78/fftools__ffprobe_8c.html#aa91b7ec8ae8a2d699fb09cc20c444fe8">pthread_mutex_unlock</a></div><div class="ttdeci">#define pthread_mutex_unlock(a)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d78/fftools__ffprobe_8c_source.html#l00074">fftools_ffprobe.c:73</a></div></div>
<div class="ttc" id="astruct_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#l00033">mobileffmpeg.c:33</a></div></div>
<div class="ttc" id="amobileffmpeg_8c_html_ae48265a7aeb85f80e2ff194693a4cf9a"><div class="ttname"><a href="../../dd/d16/mobileffmpeg_8c.html#ae48265a7aeb85f80e2ff194693a4cf9a">mutexLock</a></div><div class="ttdeci">void mutexLock()</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d16/mobileffmpeg_8c_source.html#l00252">mobileffmpeg.c:252</a></div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Jul 18 2020 22:59:36 for MobileFFmpeg Android API by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>