summaryrefslogtreecommitdiffstats
path: root/media/jni
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2014-04-22 18:37:50 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-04-22 18:37:50 +0000
commitf74de0b6f34a1840b609f111202601e10b61400a (patch)
treea5f6449bc73a44c0bebe266c395b1a3de2b16faf /media/jni
parent8effc00429d0eece67b65945d41844515a8e3742 (diff)
parente0e77cb5bb2885aea3da6823daebf40e06b073bd (diff)
downloadframeworks_base-f74de0b6f34a1840b609f111202601e10b61400a.zip
frameworks_base-f74de0b6f34a1840b609f111202601e10b61400a.tar.gz
frameworks_base-f74de0b6f34a1840b609f111202601e10b61400a.tar.bz2
Merge "Remove VideoEditor"
Diffstat (limited to 'media/jni')
-rw-r--r--media/jni/android_media_MediaProfiles.cpp85
-rw-r--r--media/jni/mediaeditor/Android.mk81
-rw-r--r--media/jni/mediaeditor/MODULE_LICENSE_APACHE20
-rw-r--r--media/jni/mediaeditor/NOTICE190
-rw-r--r--media/jni/mediaeditor/VideoBrowserInternal.h128
-rw-r--r--media/jni/mediaeditor/VideoBrowserMain.c562
-rw-r--r--media/jni/mediaeditor/VideoBrowserMain.h164
-rw-r--r--media/jni/mediaeditor/VideoEditorClasses.cpp3146
-rw-r--r--media/jni/mediaeditor/VideoEditorClasses.h603
-rw-r--r--media/jni/mediaeditor/VideoEditorJava.cpp901
-rw-r--r--media/jni/mediaeditor/VideoEditorJava.h527
-rw-r--r--media/jni/mediaeditor/VideoEditorLogging.h64
-rw-r--r--media/jni/mediaeditor/VideoEditorMain.cpp3639
-rw-r--r--media/jni/mediaeditor/VideoEditorOsal.cpp352
-rw-r--r--media/jni/mediaeditor/VideoEditorOsal.h65
-rw-r--r--media/jni/mediaeditor/VideoEditorPropertiesMain.cpp533
-rw-r--r--media/jni/mediaeditor/VideoEditorThumbnailMain.cpp333
-rw-r--r--media/jni/mediaeditor/VideoEditorThumbnailMain.h78
18 files changed, 1 insertions, 11450 deletions
diff --git a/media/jni/android_media_MediaProfiles.cpp b/media/jni/android_media_MediaProfiles.cpp
index 48a9132..1e5c700 100644
--- a/media/jni/android_media_MediaProfiles.cpp
+++ b/media/jni/android_media_MediaProfiles.cpp
@@ -290,75 +290,6 @@ android_media_MediaProfiles_native_get_image_encoding_quality_level(JNIEnv *env,
}
return static_cast<jint>(levels[index]);
}
-static jobject
-android_media_MediaProfiles_native_get_videoeditor_profile(JNIEnv *env, jobject thiz)
-{
- ALOGV("native_get_videoeditor_profile");
-
- int maxInputFrameWidth =
- sProfiles->getVideoEditorCapParamByName("videoeditor.input.width.max");
- int maxInputFrameHeight =
- sProfiles->getVideoEditorCapParamByName("videoeditor.input.height.max");
- int maxOutputFrameWidth =
- sProfiles->getVideoEditorCapParamByName("videoeditor.output.width.max");
- int maxOutputFrameHeight =
- sProfiles->getVideoEditorCapParamByName("videoeditor.output.height.max");
-
- // Check on the values retrieved
- if (maxInputFrameWidth == -1 || maxInputFrameHeight == -1 ||
- maxOutputFrameWidth == -1 || maxOutputFrameHeight == -1) {
-
- jniThrowException(env, "java/lang/RuntimeException",\
- "Error retrieving videoeditor profile params");
- return NULL;
- }
- ALOGV("native_get_videoeditor_profile \
- inWidth:%d inHeight:%d,outWidth:%d, outHeight:%d",\
- maxInputFrameWidth,maxInputFrameHeight,\
- maxOutputFrameWidth,maxOutputFrameHeight);
-
- jclass VideoEditorProfileClazz =
- env->FindClass("android/media/videoeditor/VideoEditorProfile");
- jmethodID VideoEditorProfileConstructorMethodID =
- env->GetMethodID(VideoEditorProfileClazz, "<init>", "(IIII)V");
- return env->NewObject(VideoEditorProfileClazz,
- VideoEditorProfileConstructorMethodID,
- maxInputFrameWidth,
- maxInputFrameHeight,
- maxOutputFrameWidth,
- maxOutputFrameHeight);
-}
-static jint
-android_media_MediaProfiles_native_get_videoeditor_export_profile(
- JNIEnv *env, jobject thiz, jint codec)
-{
- ALOGV("android_media_MediaProfiles_native_get_export_profile index ");
- int profile =0;
- profile = sProfiles->getVideoEditorExportParamByName("videoeditor.export.profile", codec);
- // Check the values retrieved
- if (profile == -1) {
- jniThrowException(env, "java/lang/RuntimeException",\
- "Error retrieving videoeditor export profile params");
- return -1;
- }
- return static_cast<jint>(profile);
-}
-
-static jint
-android_media_MediaProfiles_native_get_videoeditor_export_level(
- JNIEnv *env, jobject thiz, jint codec)
-{
- ALOGV("android_media_MediaProfiles_native_get_export_level");
- int level =0;
- level = sProfiles->getVideoEditorExportParamByName("videoeditor.export.level", codec);
- // Check the values retrieved
- if (level == -1) {
- jniThrowException(env, "java/lang/RuntimeException",\
- "Error retrieving videoeditor export level params");
- return -1;
- }
- return static_cast<jint>(level);
-}
static JNINativeMethod gMethodsForEncoderCapabilitiesClass[] = {
{"native_init", "()V", (void *)android_media_MediaProfiles_native_init},
{"native_get_num_file_formats", "()I", (void *)android_media_MediaProfiles_native_get_num_file_formats},
@@ -396,19 +327,10 @@ static JNINativeMethod gMethodsForCameraProfileClass[] = {
{"native_get_image_encoding_quality_level","(II)I", (void *)android_media_MediaProfiles_native_get_image_encoding_quality_level},
};
-static JNINativeMethod gMethodsForVideoEditorProfileClass[] = {
- {"native_init", "()V", (void *)android_media_MediaProfiles_native_init},
- {"native_get_videoeditor_profile", "()Landroid/media/videoeditor/VideoEditorProfile;", (void *)android_media_MediaProfiles_native_get_videoeditor_profile},
- {"native_get_videoeditor_export_profile", "(I)I", (void *)android_media_MediaProfiles_native_get_videoeditor_export_profile},
- {"native_get_videoeditor_export_level", "(I)I", (void *)android_media_MediaProfiles_native_get_videoeditor_export_level},
-};
-
static const char* const kEncoderCapabilitiesClassPathName = "android/media/EncoderCapabilities";
static const char* const kDecoderCapabilitiesClassPathName = "android/media/DecoderCapabilities";
static const char* const kCamcorderProfileClassPathName = "android/media/CamcorderProfile";
static const char* const kCameraProfileClassPathName = "android/media/CameraProfile";
-static const char* const kVideoEditorProfileClassPathName =
- "android/media/videoeditor/VideoEditorProfile";
// This function only registers the native methods, and is called from
// JNI_OnLoad in android_media_MediaPlayer.cpp
@@ -434,11 +356,6 @@ int register_android_media_MediaProfiles(JNIEnv *env)
gMethodsForCameraProfileClass,
NELEM(gMethodsForCameraProfileClass));
- int ret5 = AndroidRuntime::registerNativeMethods(env,
- kVideoEditorProfileClassPathName,
- gMethodsForVideoEditorProfileClass,
- NELEM(gMethodsForVideoEditorProfileClass));
-
// Success if all return values from above are 0
- return (ret1 || ret2 || ret3 || ret4 || ret5);
+ return (ret1 || ret2 || ret3 || ret4);
}
diff --git a/media/jni/mediaeditor/Android.mk b/media/jni/mediaeditor/Android.mk
deleted file mode 100644
index 312c366..0000000
--- a/media/jni/mediaeditor/Android.mk
+++ /dev/null
@@ -1,81 +0,0 @@
-#
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES:= \
- VideoEditorMain.cpp \
- VideoEditorClasses.cpp \
- VideoEditorOsal.cpp \
- VideoEditorJava.cpp \
- VideoEditorPropertiesMain.cpp \
- VideoEditorThumbnailMain.cpp \
- VideoBrowserMain.c
-
-LOCAL_C_INCLUDES += \
- $(TOP)/frameworks/base/core/jni \
- $(TOP)/frameworks/base/include \
- $(TOP)/frameworks/base/include/media \
- $(TOP)/frameworks/base/media/libmediaplayerservice \
- $(TOP)/frameworks/base/media/libstagefright \
- $(TOP)/frameworks/base/media/libstagefright/include \
- $(TOP)/frameworks/base/media/libstagefright/rtsp \
- $(JNI_H_INCLUDE) \
- $(TOP)/frameworks/native/include/media/editor \
- $(TOP)/frameworks/base/core/jni/mediaeditor \
- $(TOP)/frameworks/av/libvideoeditor/vss/inc \
- $(TOP)/frameworks/av/libvideoeditor/vss/common/inc \
- $(TOP)/frameworks/av/libvideoeditor/vss/mcs/inc \
- $(TOP)/frameworks/av/libvideoeditor/vss/stagefrightshells/inc \
- $(TOP)/frameworks/av/libvideoeditor/lvpp \
- $(TOP)/frameworks/av/libvideoeditor/osal/inc \
- $(TOP)/frameworks/native/include/media/openmax
-
-LOCAL_SHARED_LIBRARIES := \
- libandroid_runtime \
- libaudioutils \
- libbinder \
- libcutils \
- liblog \
- libdl \
- libgui \
- libmedia \
- libnativehelper \
- libstagefright \
- libstagefright_foundation \
- libstagefright_omx \
- libutils \
- libvideoeditor_core \
- libvideoeditor_osal \
- libvideoeditor_videofilters \
- libvideoeditorplayer \
-
-
-LOCAL_CFLAGS += \
- -DUSE_STAGEFRIGHT_CODECS \
- -DUSE_STAGEFRIGHT_AUDIODEC \
- -DUSE_STAGEFRIGHT_VIDEODEC \
- -DUSE_STAGEFRIGHT_AUDIOENC \
- -DUSE_STAGEFRIGHT_VIDEOENC \
- -DUSE_STAGEFRIGHT_READERS \
- -DUSE_STAGEFRIGHT_3GPP_READER
-
-LOCAL_MODULE:= libvideoeditor_jni
-
-LOCAL_MODULE_TAGS := optional
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/media/jni/mediaeditor/MODULE_LICENSE_APACHE2 b/media/jni/mediaeditor/MODULE_LICENSE_APACHE2
deleted file mode 100644
index e69de29..0000000
--- a/media/jni/mediaeditor/MODULE_LICENSE_APACHE2
+++ /dev/null
diff --git a/media/jni/mediaeditor/NOTICE b/media/jni/mediaeditor/NOTICE
deleted file mode 100644
index c5b1efa..0000000
--- a/media/jni/mediaeditor/NOTICE
+++ /dev/null
@@ -1,190 +0,0 @@
-
- Copyright (c) 2005-2008, The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
diff --git a/media/jni/mediaeditor/VideoBrowserInternal.h b/media/jni/mediaeditor/VideoBrowserInternal.h
deleted file mode 100644
index f4eaab8..0000000
--- a/media/jni/mediaeditor/VideoBrowserInternal.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef VIDEO_BROWSER_INTERNAL_H
-#define VIDEO_BROWSER_INTERNAL_H
-
-#include "VideoBrowserMain.h"
-
-#include "M4READER_Common.h"
-#include "M4DECODER_Common.h"
-
-
-#define VIDEO_BROWSER_BGR565
-
-/*---------------------------- MACROS ----------------------------*/
-#define CHECK_PTR(fct, p, err, errValue) \
-{ \
- if (M4OSA_NULL == p) \
- { \
- err = errValue ; \
- M4OSA_TRACE1_1("" #fct "(L%d): " #p " is NULL, returning " #errValue "", __LINE__) ; \
- goto fct##_cleanUp; \
- } \
-}
-
-#define CHECK_ERR(fct, err) \
-{ \
- if (M4OSA_ERR_IS_ERROR(err)) \
- { \
- M4OSA_TRACE1_2("" #fct "(L%d): ERROR 0x%.8x returned", __LINE__,err) ; \
- goto fct##_cleanUp; \
- } \
- else if (M4OSA_ERR_IS_WARNING(err)) \
- { \
- M4OSA_TRACE2_2("" #fct "(L%d): WARNING 0x%.8x returned", __LINE__,err) ; \
- } \
-}
-
-#define CHECK_STATE(fct, state, pC) \
-{ \
- if (state != pC->m_state) \
- { \
- M4OSA_TRACE1_1("" #fct " called in bad state %d", pC->m_state) ; \
- err = M4ERR_STATE ; \
- goto fct##_cleanUp; \
- } \
-}
-
-#define SAFE_FREE(p) \
-{ \
- if (M4OSA_NULL != p) \
- { \
- free(p) ; \
- p = M4OSA_NULL ; \
- } \
-}
-
-/*--- Video Browser state ---*/
-typedef enum
-{
- VideoBrowser_kVBCreating,
- VideoBrowser_kVBOpened,
- VideoBrowser_kVBBrowsing
-} VideoBrowser_videoBrowerState;
-
-
-/*--- Video Browser execution context. ---*/
-typedef struct
-{
- VideoBrowser_videoBrowerState m_state ;
- VideoBrowser_videoBrowerDrawMode m_drawmode;
-
- M4OSA_Context g_hbmp2;
- M4OSA_Context dc;
- M4OSA_Int16* g_bmPixels2;
-
- /*--- Reader parameters ---*/
- M4OSA_FileReadPointer m_fileReadPtr;
- M4READER_GlobalInterface* m_3gpReader ;
- M4READER_DataInterface* m_3gpData ;
- M4READER_MediaType m_mediaType ;
- M4OSA_Context m_pReaderCtx ;
-
- M4_StreamHandler* m_pStreamHandler ;
- M4_AccessUnit m_accessUnit ;
-
- /*--- Decoder parameters ---*/
- M4DECODER_VideoInterface* m_pDecoder ;
- M4OSA_Context m_pDecoderCtx ;
-
- /*--- Common display parameters ---*/
- M4OSA_UInt32 m_x ;
- M4OSA_UInt32 m_y ;
- M4VIFI_ImagePlane m_outputPlane[3] ;
-
- /*--- Current browsing time ---*/
- M4OSA_UInt32 m_currentCTS ;
-
- /*--- Platform dependent display parameters ---*/
- M4OSA_Context m_pCoreContext ;
-
- /*--- Callback function settings ---*/
- videoBrowser_Callback m_pfCallback;
- M4OSA_Void* m_pCallbackUserData;
-
- /*--- Codec Loader core context ---*/
- M4OSA_Context m_pCodecLoaderContext;
-
- /*--- Required color type ---*/
- VideoBrowser_VideoColorType m_frameColorType;
-
-} VideoBrowserContext;
-
-#endif /* VIDEO_BROWSER_INTERNAL_H */
diff --git a/media/jni/mediaeditor/VideoBrowserMain.c b/media/jni/mediaeditor/VideoBrowserMain.c
deleted file mode 100644
index c6c6000..0000000
--- a/media/jni/mediaeditor/VideoBrowserMain.c
+++ /dev/null
@@ -1,562 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "VideoEditorVideoDecoder.h"
-#include "VideoEditor3gpReader.h"
-
-#include <utils/Log.h>
-#include "VideoBrowserInternal.h"
-#include "LVOSA_FileReader_optim.h"
-
-//#define M4OSA_TRACE_LEVEL 1
-#if (M4OSA_TRACE_LEVEL >= 1)
-#undef M4OSA_TRACE1_0
-#undef M4OSA_TRACE1_1
-#undef M4OSA_TRACE1_2
-#undef M4OSA_TRACE1_3
-
-#define M4OSA_TRACE1_0(a) __android_log_print(ANDROID_LOG_INFO, "Thumbnail", a);
-#define M4OSA_TRACE1_1(a,b) __android_log_print(ANDROID_LOG_INFO, "Thumbnail", a,b);
-#define M4OSA_TRACE1_2(a,b,c) __android_log_print(ANDROID_LOG_INFO, "Thumbnail", a,b,c);
-#define M4OSA_TRACE1_3(a,b,c,d) __android_log_print(ANDROID_LOG_INFO, "Thumbnail", a,b,c,d);
-#endif
-
-/******************************************************************************
- * M4OSA_ERR videoBrowserSetWindow(
- * M4OSA_Context pContext, M4OSA_UInt32 x,
- * M4OSA_UInt32 y, M4OSA_UInt32 dx, M4OSA_UInt32 dy);
- * @brief This function sets the size and the position of the display.
- * @param pContext (IN) : Video Browser context
- * @param pPixelArray (IN) : Array to hold the video frame.
- * @param x (IN) : Horizontal position of the top left
- * corner
- * @param y (IN) : Vertical position of the top left corner
- * @param dx (IN) : Width of the display window
- * @param dy (IN) : Height of the video window
- * @return M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE / M4ERR_ALLOC
- ******************************************************************************/
-M4OSA_ERR videoBrowserSetWindow(
- M4OSA_Context pContext,
- M4OSA_Int32 *pPixelArray,
- M4OSA_UInt32 x, M4OSA_UInt32 y,
- M4OSA_UInt32 dx, M4OSA_UInt32 dy)
-{
- VideoBrowserContext* pC = (VideoBrowserContext*)pContext;
- M4OSA_ERR err = M4NO_ERROR;
-
- M4OSA_TRACE2_5("videoBrowserSetWindow: entering with 0x%x %d %d %d %d ",
- pContext, x, y, dx, dy);
-
- /*--- Sanity checks ---*/
- CHECK_PTR(videoBrowserSetWindow, pContext, err, M4ERR_PARAMETER);
- CHECK_PTR(videoBrowserSetWindow, pPixelArray, err, M4ERR_PARAMETER);
- CHECK_STATE(videoBrowserSetWindow, VideoBrowser_kVBOpened, pC);
-
- pC->m_outputPlane[0].u_topleft = 0;
-
- pC->m_outputPlane[0].u_height = dy;
- pC->m_outputPlane[0].u_width = dx;
- pC->m_x = x;
- pC->m_y = y;
-
- if (pC->m_frameColorType == VideoBrowser_kGB565) {
- pC->m_outputPlane[0].u_stride = pC->m_outputPlane[0].u_width << 1;
- pC->m_outputPlane[0].pac_data = (M4OSA_UInt8*)M4OSA_32bitAlignedMalloc(
- pC->m_outputPlane[0].u_stride * pC->m_outputPlane[0].u_height,
- VIDEOBROWSER, (M4OSA_Char *)"output plane");
-
- CHECK_PTR(videoBrowserSetWindow,
- pC->m_outputPlane[0].pac_data, err, M4ERR_ALLOC);
- }
- else if (pC->m_frameColorType == VideoBrowser_kYUV420) {
- pC->m_outputPlane[0].u_stride = pC->m_outputPlane[0].u_width;
- pC->m_outputPlane[1].u_height = pC->m_outputPlane[0].u_height >> 1;
- pC->m_outputPlane[1].u_width = pC->m_outputPlane[0].u_width >> 1;
- pC->m_outputPlane[1].u_topleft = 0;
- pC->m_outputPlane[1].u_stride = pC->m_outputPlane[1].u_width;
-
- pC->m_outputPlane[2].u_height = pC->m_outputPlane[0].u_height >> 1;
- pC->m_outputPlane[2].u_width = pC->m_outputPlane[0].u_width >> 1;
- pC->m_outputPlane[2].u_topleft = 0;
- pC->m_outputPlane[2].u_stride = pC->m_outputPlane[2].u_width;
-
- pC->m_outputPlane[0].pac_data = (M4OSA_UInt8*)pPixelArray;
-
- CHECK_PTR(videoBrowserSetWindow,
- pC->m_outputPlane[0].pac_data, err, M4ERR_ALLOC);
-
- pC->m_outputPlane[1].pac_data =
- pC->m_outputPlane[0].pac_data +
- (pC->m_outputPlane[0].u_stride * pC->m_outputPlane[0].u_height);
-
- pC->m_outputPlane[2].pac_data =
- pC->m_outputPlane[1].pac_data +
- (pC->m_outputPlane[1].u_stride * pC->m_outputPlane[1].u_height);
- }
-
-
- M4OSA_TRACE2_0("videoBrowserSetWindow returned NO ERROR");
- return M4NO_ERROR;
-
-videoBrowserSetWindow_cleanUp:
-
- M4OSA_TRACE2_1("videoBrowserSetWindow returned 0x%x", err);
- return err;
-}
-
-/******************************************************************************
-* @brief This function allocates the resources needed for browsing a video file
-* @param ppContext (OUT): Pointer on a context filled by this function.
-* @param pURL (IN) : Path of File to browse
-* @param DrawMode (IN) : Indicate which method is used to draw (Direct draw etc...)
-* @param pfCallback (IN) : Callback function to be called when a frame must be displayed
-* @param pCallbackData (IN) : User defined data that will be passed as parameter of the callback
-* @param clrType (IN) : Required color type.
-* @return M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE / M4ERR_ALLOC
-******************************************************************************/
-M4OSA_ERR videoBrowserCreate(
- M4OSA_Context* ppContext,
- M4OSA_Char* pURL,
- M4OSA_UInt32 DrawMode,
- M4OSA_FileReadPointer* ptrF,
- videoBrowser_Callback pfCallback,
- M4OSA_Void* pCallbackData,
- VideoBrowser_VideoColorType clrType)
-{
- VideoBrowserContext* pContext = M4OSA_NULL;
- M4READER_MediaFamily mediaFamily = M4READER_kMediaFamilyUnknown;
- M4_StreamHandler* pStreamHandler = M4OSA_NULL;
- M4_VideoStreamHandler* pVideoStreamHandler = M4OSA_NULL;
- M4DECODER_VideoType decoderType;
- M4DECODER_OutputFilter FilterOption;
-
- M4OSA_Bool deb = M4OSA_TRUE;
- M4OSA_ERR err = M4NO_ERROR;
-
- M4OSA_TRACE1_2(
- "videoBrowserCreate: entering with 0x%x 0x%x", ppContext, pURL);
-
- /*--- Sanity checks ---*/
- CHECK_PTR(videoBrowserCreate, ppContext, err, M4ERR_PARAMETER);
- *ppContext = M4OSA_NULL ;
- CHECK_PTR(videoBrowserCreate, pURL, err, M4ERR_PARAMETER);
-
- /*--- Create context ---*/
- pContext = (VideoBrowserContext*)M4OSA_32bitAlignedMalloc(
- sizeof(VideoBrowserContext),
- VIDEOBROWSER, (M4OSA_Char*)"Video browser context");
-
- CHECK_PTR(videoBrowserCreate, pContext,err, M4ERR_ALLOC);
- memset((void *)pContext, 0,sizeof(VideoBrowserContext));
-
- /*--- Initialize the context parameters ---*/
- pContext->m_state = VideoBrowser_kVBCreating ;
- pContext->m_frameColorType = clrType;
-
- /*--- Copy the file reader functions ---*/
- memcpy((void *)&pContext->m_fileReadPtr,
- (void *)ptrF,
- sizeof(M4OSA_FileReadPointer)) ;
-
- /* PR#SP00013 DGR bug 13 : first frame is not visible */
- pContext->m_drawmode = DrawMode;
-
-
- /* Retrieve the 3gp reader interface */
- VideoEditor3gpReader_getInterface(&pContext->m_mediaType,
- &pContext->m_3gpReader, &pContext->m_3gpData);
-
- CHECK_PTR(videoBrowserCreate, pContext->m_3gpReader, err, M4ERR_ALLOC);
- CHECK_PTR(videoBrowserCreate, pContext->m_3gpData, err, M4ERR_ALLOC);
-
- /*--- Create the file reader ---*/
- err = pContext->m_3gpReader->m_pFctCreate(&pContext->m_pReaderCtx);
- CHECK_ERR(videoBrowserCreate, err);
- CHECK_PTR(videoBrowserCreate, pContext->m_pReaderCtx, err, M4ERR_ALLOC);
- pContext->m_3gpData->m_readerContext = pContext->m_pReaderCtx;
-
- /*--- Set the OSAL file reader functions ---*/
- err = pContext->m_3gpReader->m_pFctSetOption(
- pContext->m_pReaderCtx,
- M4READER_kOptionID_SetOsaFileReaderFctsPtr,
- (M4OSA_DataOption)(&pContext->m_fileReadPtr));
-
- CHECK_ERR(videoBrowserCreate, err) ;
-
- /*--- Open the file ---*/
- err = pContext->m_3gpReader->m_pFctOpen(pContext->m_pReaderCtx, pURL);
- CHECK_ERR(videoBrowserCreate, err) ;
-
- /*--- Try to find a video stream ---*/
- while (err == M4NO_ERROR)
- {
- err = pContext->m_3gpReader->m_pFctGetNextStream(
- pContext->m_pReaderCtx, &mediaFamily, &pStreamHandler);
-
- /*in case we found a bifs stream or something else...*/
- if ((err == (M4OSA_UInt32)M4ERR_READER_UNKNOWN_STREAM_TYPE) ||
- (err == (M4OSA_UInt32)M4WAR_TOO_MUCH_STREAMS))
- {
- err = M4NO_ERROR;
- continue;
- }
-
- if (err != M4WAR_NO_MORE_STREAM)
- {
- if (M4READER_kMediaFamilyVideo != mediaFamily)
- {
- err = M4NO_ERROR;
- continue;
- }
-
- pContext->m_pStreamHandler = pStreamHandler;
-
- err = pContext->m_3gpReader->m_pFctReset(
- pContext->m_pReaderCtx, pContext->m_pStreamHandler);
-
- CHECK_ERR(videoBrowserCreate, err);
-
- err = pContext->m_3gpReader->m_pFctFillAuStruct(
- pContext->m_pReaderCtx,
- pContext->m_pStreamHandler,
- &pContext->m_accessUnit);
-
- CHECK_ERR(videoBrowserCreate, err);
-
- pVideoStreamHandler =
- (M4_VideoStreamHandler*)pContext->m_pStreamHandler;
-
- switch (pContext->m_pStreamHandler->m_streamType)
- {
- case M4DA_StreamTypeVideoMpeg4:
- case M4DA_StreamTypeVideoH263:
- {
- pContext->m_pCodecLoaderContext = M4OSA_NULL;
- decoderType = M4DECODER_kVideoTypeMPEG4;
-
-#ifdef USE_SOFTWARE_DECODER
- err = VideoEditorVideoDecoder_getSoftwareInterface_MPEG4(
- &decoderType, &pContext->m_pDecoder);
-#else
- err = VideoEditorVideoDecoder_getInterface_MPEG4(
- &decoderType, (void **)&pContext->m_pDecoder);
-#endif
- CHECK_ERR(videoBrowserCreate, err) ;
-
- err = pContext->m_pDecoder->m_pFctCreate(
- &pContext->m_pDecoderCtx,
- pContext->m_pStreamHandler,
- pContext->m_3gpReader,
- pContext->m_3gpData,
- &pContext->m_accessUnit,
- pContext->m_pCodecLoaderContext) ;
-
- CHECK_ERR(videoBrowserCreate, err) ;
- }
- break;
-
- case M4DA_StreamTypeVideoMpeg4Avc:
- {
- pContext->m_pCodecLoaderContext = M4OSA_NULL;
-
- decoderType = M4DECODER_kVideoTypeAVC;
-
-#ifdef USE_SOFTWARE_DECODER
- err = VideoEditorVideoDecoder_getSoftwareInterface_H264(
- &decoderType, &pContext->m_pDecoder);
-#else
- err = VideoEditorVideoDecoder_getInterface_H264(
- &decoderType, (void **)&pContext->m_pDecoder);
-#endif
- CHECK_ERR(videoBrowserCreate, err) ;
-
- err = pContext->m_pDecoder->m_pFctCreate(
- &pContext->m_pDecoderCtx,
- pContext->m_pStreamHandler,
- pContext->m_3gpReader,
- pContext->m_3gpData,
- &pContext->m_accessUnit,
- pContext->m_pCodecLoaderContext) ;
-
- CHECK_ERR(videoBrowserCreate, err) ;
- }
- break;
-
- default:
- err = M4ERR_VB_MEDIATYPE_NOT_SUPPORTED;
- goto videoBrowserCreate_cleanUp;
- }
- }
- }
-
- if (err == M4WAR_NO_MORE_STREAM)
- {
- err = M4NO_ERROR ;
- }
-
- if (M4OSA_NULL == pContext->m_pStreamHandler)
- {
- err = M4ERR_VB_NO_VIDEO ;
- goto videoBrowserCreate_cleanUp ;
- }
-
- err = pContext->m_pDecoder->m_pFctSetOption(
- pContext->m_pDecoderCtx,
- M4DECODER_kOptionID_DeblockingFilter,
- (M4OSA_DataOption)&deb);
-
- if (err == M4WAR_DEBLOCKING_FILTER_NOT_IMPLEMENTED)
- {
- err = M4NO_ERROR;
- }
- CHECK_ERR(videoBrowserCreate, err);
-
- FilterOption.m_pFilterUserData = M4OSA_NULL;
-
-
- if (pContext->m_frameColorType == VideoBrowser_kGB565) {
- FilterOption.m_pFilterFunction =
- (M4OSA_Void*)M4VIFI_ResizeBilinearYUV420toBGR565;
- }
- else if (pContext->m_frameColorType == VideoBrowser_kYUV420) {
- FilterOption.m_pFilterFunction =
- (M4OSA_Void*)M4VIFI_ResizeBilinearYUV420toYUV420;
- }
- else {
- err = M4ERR_PARAMETER;
- goto videoBrowserCreate_cleanUp;
- }
-
- err = pContext->m_pDecoder->m_pFctSetOption(
- pContext->m_pDecoderCtx,
- M4DECODER_kOptionID_OutputFilter,
- (M4OSA_DataOption)&FilterOption);
-
- CHECK_ERR(videoBrowserCreate, err);
-
- /* store the callback details */
- pContext->m_pfCallback = pfCallback;
- pContext->m_pCallbackUserData = pCallbackData;
- /* store the callback details */
-
- pContext->m_state = VideoBrowser_kVBOpened;
- *ppContext = pContext;
-
- M4OSA_TRACE1_0("videoBrowserCreate returned NO ERROR");
- return M4NO_ERROR;
-
-videoBrowserCreate_cleanUp:
-
- if (M4OSA_NULL != pContext)
- {
- if (M4OSA_NULL != pContext->m_pDecoderCtx)
- {
- pContext->m_pDecoder->m_pFctDestroy(pContext->m_pDecoderCtx);
- pContext->m_pDecoderCtx = M4OSA_NULL;
- }
-
- if (M4OSA_NULL != pContext->m_pReaderCtx)
- {
- pContext->m_3gpReader->m_pFctClose(pContext->m_pReaderCtx);
- pContext->m_3gpReader->m_pFctDestroy(pContext->m_pReaderCtx);
- pContext->m_pReaderCtx = M4OSA_NULL;
- }
- SAFE_FREE(pContext->m_pDecoder);
- SAFE_FREE(pContext->m_3gpReader);
- SAFE_FREE(pContext->m_3gpData);
- SAFE_FREE(pContext);
- }
-
- M4OSA_TRACE2_1("videoBrowserCreate returned 0x%x", err);
- return err;
-}
-
-/******************************************************************************
-* M4OSA_ERR videoBrowserCleanUp(M4OSA_Context pContext);
-* @brief This function frees the resources needed for browsing a
-* video file.
-* @param pContext (IN) : Video browser context
-* @return M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE
-******************************************************************************/
-M4OSA_ERR videoBrowserCleanUp(M4OSA_Context pContext)
-{
- VideoBrowserContext* pC = (VideoBrowserContext*)pContext;
- M4OSA_ERR err = M4NO_ERROR;
-
- M4OSA_TRACE2_1("videoBrowserCleanUp: entering with 0x%x", pContext);
-
- /*--- Sanity checks ---*/
- CHECK_PTR(videoBrowserCleanUp, pContext, err, M4ERR_PARAMETER);
-
- if (M4OSA_NULL != pC->m_pDecoderCtx)
- {
- pC->m_pDecoder->m_pFctDestroy(pC->m_pDecoderCtx);
- pC->m_pDecoderCtx = M4OSA_NULL ;
- }
-
- if (M4OSA_NULL != pC->m_pReaderCtx)
- {
- pC->m_3gpReader->m_pFctClose(pC->m_pReaderCtx) ;
- pC->m_3gpReader->m_pFctDestroy(pC->m_pReaderCtx);
- pC->m_pReaderCtx = M4OSA_NULL;
- }
-
- SAFE_FREE(pC->m_pDecoder);
- SAFE_FREE(pC->m_3gpReader);
- SAFE_FREE(pC->m_3gpData);
-
- if (pC->m_frameColorType != VideoBrowser_kYUV420) {
- SAFE_FREE(pC->m_outputPlane[0].pac_data);
- }
- SAFE_FREE(pC);
-
- M4OSA_TRACE2_0("videoBrowserCleanUp returned NO ERROR");
- return M4NO_ERROR;
-
-videoBrowserCleanUp_cleanUp:
-
- M4OSA_TRACE2_1("videoBrowserCleanUp returned 0x%x", err);
- return err;
-}
-/******************************************************************************
-* M4OSA_ERR videoBrowserPrepareFrame(
-* M4OSA_Context pContext, M4OSA_UInt32* pTime);
-* @brief This function prepares the frame.
-* @param pContext (IN) : Video browser context
-* @param pTime (IN/OUT) : Pointer on the time to reach. Updated
-* by this function with the reached time
-* @param tolerance (IN) : We may decode an earlier frame within the tolerance.
-* The time difference is specified in milliseconds.
-* @return M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE / M4ERR_ALLOC
-******************************************************************************/
-M4OSA_ERR videoBrowserPrepareFrame(M4OSA_Context pContext, M4OSA_UInt32* pTime,
- M4OSA_UInt32 tolerance)
-{
- VideoBrowserContext* pC = (VideoBrowserContext*)pContext;
- M4OSA_ERR err = M4NO_ERROR;
- M4OSA_UInt32 targetTime = 0;
- M4_MediaTime timeMS = 0;
- M4OSA_Bool bJumpNeeded = M4OSA_FALSE;
-
- /*--- Sanity checks ---*/
- CHECK_PTR(videoBrowserPrepareFrame, pContext, err, M4ERR_PARAMETER);
- CHECK_PTR(videoBrowserPrepareFrame, pTime, err, M4ERR_PARAMETER);
-
- targetTime = *pTime ;
-
- /*--- Check the state, if this is the first call to this function
- we move to the state "browsing" ---*/
- if (VideoBrowser_kVBOpened == pC->m_state)
- {
- pC->m_state = VideoBrowser_kVBBrowsing;
- }
- else if (VideoBrowser_kVBBrowsing != pC->m_state)
- {
- err = M4ERR_STATE ;
- goto videoBrowserPrepareFrame_cleanUp;
- }
-
- // If we jump backward or forward to a time greater than current position by
- // 85ms (~ 2 frames), we want to jump.
- if (pC->m_currentCTS == 0 ||
- targetTime < pC->m_currentCTS ||
- targetTime > (pC->m_currentCTS + 85))
- {
- bJumpNeeded = M4OSA_TRUE;
- }
-
- timeMS = (M4_MediaTime)targetTime;
- err = pC->m_pDecoder->m_pFctDecode(
- pC->m_pDecoderCtx, &timeMS, bJumpNeeded, tolerance);
-
- if ((err != M4NO_ERROR) && (err != M4WAR_NO_MORE_AU))
- {
- return err;
- }
-
- err = pC->m_pDecoder->m_pFctRender(
- pC->m_pDecoderCtx, &timeMS, pC->m_outputPlane, M4OSA_TRUE);
-
- if (M4WAR_VIDEORENDERER_NO_NEW_FRAME == err)
- {
- return err;
- }
- CHECK_ERR(videoBrowserPrepareFrame, err) ;
-
- pC->m_currentCTS = (M4OSA_UInt32)timeMS;
-
- *pTime = pC->m_currentCTS;
-
- return M4NO_ERROR;
-
-videoBrowserPrepareFrame_cleanUp:
-
- if ((M4WAR_INVALID_TIME == err) || (M4WAR_NO_MORE_AU == err))
- {
- err = M4NO_ERROR;
- }
- else if (M4OSA_NULL != pC)
- {
- pC->m_currentCTS = 0;
- }
-
- M4OSA_TRACE2_1("videoBrowserPrepareFrame returned 0x%x", err);
- return err;
-}
-
-/******************************************************************************
-* M4OSA_ERR videoBrowserDisplayCurrentFrame(M4OSA_Context pContext);
-* @brief This function displays the current frame.
-* @param pContext (IN) : Video browser context
-* @return M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE / M4ERR_ALLOC
-******************************************************************************/
-M4OSA_ERR videoBrowserDisplayCurrentFrame(M4OSA_Context pContext)
-{
- VideoBrowserContext* pC = (VideoBrowserContext*)pContext ;
- M4OSA_ERR err = M4NO_ERROR ;
-
- /*--- Sanity checks ---*/
- CHECK_PTR(videoBrowserDisplayCurrentFrame, pContext, err, M4ERR_PARAMETER);
-
- // Request display of the frame
- pC->m_pfCallback((M4OSA_Context) pC, // VB context
- VIDEOBROWSER_DISPLAY_FRAME, // action requested
- M4NO_ERROR, // error code
- (M4OSA_Void*) &(pC->m_outputPlane[0]), // image to be displayed
- (M4OSA_Void*) pC->m_pCallbackUserData); // user-provided data
-
-#ifdef DUMPTOFILE
- {
- M4OSA_Context fileContext;
- M4OSA_Char* fileName = "/sdcard/textBuffer_RGB565.rgb";
- M4OSA_fileWriteOpen(&fileContext, (M4OSA_Void*) fileName,
- M4OSA_kFileWrite | M4OSA_kFileCreate);
-
- M4OSA_fileWriteData(fileContext,
- (M4OSA_MemAddr8) pC->m_outputPlane[0].pac_data,
- pC->m_outputPlane[0].u_height*pC->m_outputPlane[0].u_width*2);
-
- M4OSA_fileWriteClose(fileContext);
- }
-#endif
-
- M4OSA_TRACE2_0("videoBrowserDisplayCurrentFrame returned NO ERROR") ;
- return M4NO_ERROR;
-
-videoBrowserDisplayCurrentFrame_cleanUp:
-
- M4OSA_TRACE2_1("videoBrowserDisplayCurrentFrame returned 0x%x", err) ;
- return err;
-}
diff --git a/media/jni/mediaeditor/VideoBrowserMain.h b/media/jni/mediaeditor/VideoBrowserMain.h
deleted file mode 100644
index 00b5e05..0000000
--- a/media/jni/mediaeditor/VideoBrowserMain.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef VIDEO_BROWSER_MAIN_H
-#define VIDEO_BROWSER_MAIN_H
-
-/**
- ************************************************************************
- * @file VideoBrowserMain.h
- * @brief Video browser Interface functions
- ************************************************************************
-*/
-
-#define VIDEOBROWSER 0x423
-
-#include "M4OSA_Memory.h"
-#include "M4OSA_CharStar.h"
-#include "M4OSA_OptionID.h"
-#include "M4OSA_Debug.h"
-#include "M4VIFI_FiltersAPI.h"
-#include "M4OSA_FileReader.h"
-
-
-/**
- ************************************************************************
- * @brief Error codes definition.
- * @note These value are the Browser engine specific error codes.
- ************************************************************************
-*/
-#define M4ERR_VB_MEDIATYPE_NOT_SUPPORTED M4OSA_ERR_CREATE(M4_ERR, VIDEOBROWSER, 0x01)
-#define M4ERR_VB_NO_VIDEO M4OSA_ERR_CREATE(M4_ERR, VIDEOBROWSER, 0x02)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Video Browser draw mode, extension for angle based bliting can be done
- */
-typedef enum
-{
- VideoBrowser_kVBNormalBliting
-} VideoBrowser_videoBrowerDrawMode;
-
-
-/*--- Video Browser output frame color type ---*/
-typedef enum
-{
- VideoBrowser_kYUV420,
- VideoBrowser_kGB565
-} VideoBrowser_VideoColorType;
-
-/**
- ************************************************************************
- * enumeration VideoBrowser_Notification
- * @brief Video Browser notification type.
- * @note This callback mechanism must be used to wait the completion of an asynchronous
- * operation, before calling another API function.
- ************************************************************************
-*/
-typedef enum
-{
- /**
- * A frame is ready to be displayed, it should be displayed in the callback function
- * pCbData type = M4VIFI_ImagePlane*
- */
- VIDEOBROWSER_DISPLAY_FRAME = 0x00000001,
- VIDEOBROWSER_NOTIFICATION_NONE = 0xffffffff
-}VideoBrowser_Notification;
-
-
-/**
- ************************************************************************
- * @brief videoBrowser_Callback type definition
- * @param pInstance (IN) Video Browser context.
- * @param notificationID (IN) Id of the callback which generated the error
- * @param errCode (IN) Error code from the core
- * @param pCbData (IN) pointer to data associated wit the callback.
- * @param pCbUserData (IN) pointer to application user data passed in init.
- * @note This callback mechanism is used to request display of an image
- ************************************************************************
-*/
-typedef M4OSA_Void (*videoBrowser_Callback) (M4OSA_Context pInstance,
- VideoBrowser_Notification notificationID,
- M4OSA_ERR errCode,
- M4OSA_Void* pCbData,
- M4OSA_Void* pCallbackUserData);
-
-
-/******************************************************************************
-* @brief This function allocates the resources needed for browsing a video file.
-* @param ppContext (OUT): Pointer on a context filled by this function.
-* @param pURL (IN) : Path of File to browse
-* @param DrawMode (IN) : Indicate which method is used to draw (Direct draw etc...)
-* @param pfCallback (IN) : Callback function to be called when a frame must be displayed
-* @param pCallbackData (IN) : User defined data that will be passed as parameter of the callback
-* @param clrType (IN) : Required color type.
-* @return M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE / M4ERR_ALLOC
-******************************************************************************/
-M4OSA_ERR videoBrowserCreate(M4OSA_Context* ppContext, M4OSA_Char* pURL,
- M4OSA_UInt32 DrawMode,
- M4OSA_FileReadPointer* ptrF,
- videoBrowser_Callback pfCallback,
- M4OSA_Void* pCallbackData,
- VideoBrowser_VideoColorType clrType);
-
-/******************************************************************************
-* @brief This function frees the resources needed for browsing a video file.
-* @param pContext (IN) : Video browser context
-* @return M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE
-******************************************************************************/
-M4OSA_ERR videoBrowserCleanUp(M4OSA_Context pContext) ;
-
-
-/******************************************************************************
-* @brief This function allocates the resources needed for browsing a video file.
-* @param pContext (IN) : Video browser context
-* @param pTime (IN/OUT) : Pointer on the time to reach. Updated by
-* this function with the reached time
-* @return M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE / M4ERR_ALLOC
-******************************************************************************/
-M4OSA_ERR videoBrowserPrepareFrame(M4OSA_Context pContext, M4OSA_UInt32* pTime,
- M4OSA_UInt32 tolerance);
-
-/******************************************************************************
-* @brief This function sets the size and the position of the display.
-* @param pContext (IN) : Video Browser context
-* @param pixelArray (IN) : Array to hold the video frame.
-* @param x (IN) : Horizontal position of the top left corner
-* @param y (IN) : Vertical position of the top left corner
-* @param dx (IN) : Width of the display window
-* @param dy (IN) : Height of the video window
-* @return M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE / M4ERR_ALLOC
-******************************************************************************/
-M4OSA_ERR videoBrowserSetWindow(M4OSA_Context pContext, M4OSA_Int32* pixelArray,
- M4OSA_UInt32 x, M4OSA_UInt32 y,
- M4OSA_UInt32 dx, M4OSA_UInt32 dy);
-
-/******************************************************************************
-* @brief This function displays the current frame.
-* @param pContext (IN) : Video browser context
-* @return M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE / M4ERR_ALLOC
-******************************************************************************/
-M4OSA_ERR videoBrowserDisplayCurrentFrame(M4OSA_Context pContext);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* VIDEO_BROWSER_MAIN_H */
diff --git a/media/jni/mediaeditor/VideoEditorClasses.cpp b/media/jni/mediaeditor/VideoEditorClasses.cpp
deleted file mode 100644
index d29fad3..0000000
--- a/media/jni/mediaeditor/VideoEditorClasses.cpp
+++ /dev/null
@@ -1,3146 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "VideoEditorClasses"
-
-#include <VideoEditorClasses.h>
-#include <VideoEditorJava.h>
-#include <VideoEditorLogging.h>
-#include <VideoEditorOsal.h>
-
-extern "C" {
-#include <M4OSA_Clock.h>
-#include <M4OSA_CharStar.h>
-#include <M4OSA_FileCommon.h>
-#include <M4OSA_FileReader.h>
-#include <M4OSA_FileWriter.h>
-#include <M4OSA_Memory.h>
-#include <M4OSA_Debug.h>
-#include <M4OSA_Thread.h>
-#include <M4VSS3GPP_API.h>
-#include <M4xVSS_API.h>
-#include <M4VSS3GPP_ErrorCodes.h>
-#include <M4MCS_ErrorCodes.h>
-#include <M4READER_Common.h>
-#include <M4WRITER_common.h>
-#include <M4DECODER_Common.h>
-};
-
-#define VIDEOEDIT_PROP_JAVA_RESULT_STRING_MAX (128)
-
-#define VIDEOEDIT_JAVA__RESULT_STRING_MAX (128)
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(AudioEffect)
-{
- VIDEOEDIT_JAVA_CONSTANT_INIT("NONE", M4VSS3GPP_kAudioEffectType_None),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FADE_IN", M4VSS3GPP_kAudioEffectType_FadeIn),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FADE_OUT", M4VSS3GPP_kAudioEffectType_FadeOut)
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(AudioEffect, AUDIO_EFFECT_CLASS_NAME, M4OSA_NULL, M4OSA_NULL)
-
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(AudioFormat)
-{
- VIDEOEDIT_JAVA_CONSTANT_INIT("NO_AUDIO", M4VIDEOEDITING_kNoneAudio),
- VIDEOEDIT_JAVA_CONSTANT_INIT("AMR_NB", M4VIDEOEDITING_kAMR_NB),
- VIDEOEDIT_JAVA_CONSTANT_INIT("AAC", M4VIDEOEDITING_kAAC),
- VIDEOEDIT_JAVA_CONSTANT_INIT("AAC_PLUS", M4VIDEOEDITING_kAACplus),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ENHANCED_AAC_PLUS", M4VIDEOEDITING_keAACplus),
- VIDEOEDIT_JAVA_CONSTANT_INIT("MP3", M4VIDEOEDITING_kMP3),
- VIDEOEDIT_JAVA_CONSTANT_INIT("EVRC", M4VIDEOEDITING_kEVRC),
- VIDEOEDIT_JAVA_CONSTANT_INIT("PCM", M4VIDEOEDITING_kPCM),
- VIDEOEDIT_JAVA_CONSTANT_INIT("NULL_AUDIO", M4VIDEOEDITING_kNullAudio),
- VIDEOEDIT_JAVA_CONSTANT_INIT("UNSUPPORTED_AUDIO", M4VIDEOEDITING_kUnsupportedAudio)
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(AudioFormat, AUDIO_FORMAT_CLASS_NAME, M4OSA_NULL, M4OSA_NULL)
-
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(AudioSamplingFrequency)
-{
- VIDEOEDIT_JAVA_CONSTANT_INIT("FREQ_DEFAULT", M4VIDEOEDITING_kDefault_ASF),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FREQ_8000", M4VIDEOEDITING_k8000_ASF),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FREQ_16000", M4VIDEOEDITING_k16000_ASF),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FREQ_22050", M4VIDEOEDITING_k22050_ASF),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FREQ_24000", M4VIDEOEDITING_k24000_ASF),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FREQ_32000", M4VIDEOEDITING_k32000_ASF),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FREQ_44100", M4VIDEOEDITING_k44100_ASF),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FREQ_48000", M4VIDEOEDITING_k48000_ASF)
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(AudioSamplingFrequency,AUDIO_SAMPLING_FREQUENCY_CLASS_NAME,
- M4OSA_NULL, M4OSA_NULL)
-
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(AudioTransition)
-{
- VIDEOEDIT_JAVA_CONSTANT_INIT("NONE", M4VSS3GPP_kAudioTransitionType_None),
- VIDEOEDIT_JAVA_CONSTANT_INIT("CROSS_FADE", M4VSS3GPP_kAudioTransitionType_CrossFade)
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(AudioTransition, AUDIO_TRANSITION_CLASS_NAME, M4OSA_NULL,
- M4OSA_NULL)
-
-
-static const char*
-videoEditClasses_getUnknownBitrateString(int bitrate)
-{
- static char string[VIDEOEDIT_JAVA__RESULT_STRING_MAX] = "";
-
- M4OSA_chrSPrintf((M4OSA_Char *)string, sizeof(string) - 1, (M4OSA_Char*)"%d", bitrate);
-
- // Return the bitrate string.
- return(string);
-}
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(Bitrate)
-{
- VIDEOEDIT_JAVA_CONSTANT_INIT("VARIABLE", M4VIDEOEDITING_kVARIABLE_KBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("UNDEFINED", M4VIDEOEDITING_kUndefinedBitrate),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_9_2_KBPS", M4VIDEOEDITING_k9_2_KBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_12_2_KBPS", M4VIDEOEDITING_k12_2_KBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_16_KBPS", M4VIDEOEDITING_k16_KBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_24_KBPS", M4VIDEOEDITING_k24_KBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_32_KBPS", M4VIDEOEDITING_k32_KBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_48_KBPS", M4VIDEOEDITING_k48_KBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_64_KBPS", M4VIDEOEDITING_k64_KBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_96_KBPS", M4VIDEOEDITING_k96_KBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_128_KBPS", M4VIDEOEDITING_k128_KBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_192_KBPS", M4VIDEOEDITING_k192_KBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_256_KBPS", M4VIDEOEDITING_k256_KBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_288_KBPS", M4VIDEOEDITING_k288_KBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_384_KBPS", M4VIDEOEDITING_k384_KBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_512_KBPS", M4VIDEOEDITING_k512_KBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_800_KBPS", M4VIDEOEDITING_k800_KBPS),
-/*+ New Encoder bitrates */
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_2_MBPS", M4VIDEOEDITING_k2_MBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_5_MBPS", M4VIDEOEDITING_k5_MBPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BR_8_MBPS", M4VIDEOEDITING_k8_MBPS)
-/*- New Encoder bitrates */
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(Bitrate, BITRATE_CLASS_NAME,
- videoEditClasses_getUnknownBitrateString, videoEditClasses_getUnknownBitrateString)
-
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(ClipType)
-{
- VIDEOEDIT_JAVA_CONSTANT_INIT("THREE_GPP", M4VIDEOEDITING_kFileType_3GPP),
- VIDEOEDIT_JAVA_CONSTANT_INIT("MP4", M4VIDEOEDITING_kFileType_MP4),
- VIDEOEDIT_JAVA_CONSTANT_INIT("AMR", M4VIDEOEDITING_kFileType_AMR),
- VIDEOEDIT_JAVA_CONSTANT_INIT("MP3", M4VIDEOEDITING_kFileType_MP3),
- VIDEOEDIT_JAVA_CONSTANT_INIT("PCM", M4VIDEOEDITING_kFileType_PCM),
- VIDEOEDIT_JAVA_CONSTANT_INIT("JPG", M4VIDEOEDITING_kFileType_JPG),
- VIDEOEDIT_JAVA_CONSTANT_INIT("PNG", M4VIDEOEDITING_kFileType_PNG),
- VIDEOEDIT_JAVA_CONSTANT_INIT("M4V", M4VIDEOEDITING_kFileType_M4V),
- VIDEOEDIT_JAVA_CONSTANT_INIT("UNSUPPORTED", M4VIDEOEDITING_kFileType_Unsupported)
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(ClipType, FILE_TYPE_CLASS_NAME, M4OSA_NULL, M4OSA_NULL)
-
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(Engine)
-{
- VIDEOEDIT_JAVA_CONSTANT_INIT("TASK_LOADING_SETTINGS", TASK_LOADING_SETTINGS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("TASK_ENCODING", TASK_ENCODING)
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(Engine, MANUAL_EDIT_ENGINE_CLASS_NAME, M4OSA_NULL,
- M4OSA_NULL)
-
-
-static const char*
-videoEditClasses_getUnknownErrorName(int error)
-{
- static char string[VIDEOEDIT_JAVA__RESULT_STRING_MAX] = "ERR_INTERNAL";
-
- // Format the unknown error string.
- M4OSA_chrSPrintf((M4OSA_Char *)string, sizeof(string) - 1, (M4OSA_Char*)"ERR_INTERNAL(%s)",
- videoEditOsal_getResultString(error));
-
- // Return the error string.
- return(string);
-}
-
-static const char*
-videoEditClasses_getUnknownErrorString(int error)
-{
- // Return the result string.
- return(videoEditOsal_getResultString(error));
-}
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(Error)
-{
- // M4OSA_Clock.h
- VIDEOEDIT_JAVA_CONSTANT_INIT("WAR_TIMESCALE_TOO_BIG", \
- M4WAR_TIMESCALE_TOO_BIG ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_CLOCK_BAD_REF_YEAR", \
- M4ERR_CLOCK_BAD_REF_YEAR ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_FILE_NOT_FOUND", \
- M4ERR_FILE_NOT_FOUND ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("WAR_TRANSCODING_NECESSARY", \
- M4VSS3GPP_WAR_TRANSCODING_NECESSARY ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("WAR_MAX_OUTPUT_SIZE_EXCEEDED", \
- M4VSS3GPP_WAR_OUTPUTFILESIZE_EXCEED ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_BUFFER_OUT_TOO_SMALL", \
- M4xVSSWAR_BUFFER_OUT_TOO_SMALL ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_NOMORE_SPACE_FOR_FILE", \
- M4xVSSERR_NO_MORE_SPACE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INVALID_FILE_TYPE", \
- M4VSS3GPP_ERR_INVALID_FILE_TYPE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INVALID_EFFECT_KIND", \
- M4VSS3GPP_ERR_INVALID_EFFECT_KIND ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INVALID_VIDEO_EFFECT_TYPE", \
- M4VSS3GPP_ERR_INVALID_VIDEO_EFFECT_TYPE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INVALID_AUDIO_EFFECT_TYPE", \
- M4VSS3GPP_ERR_INVALID_AUDIO_EFFECT_TYPE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INVALID_VIDEO_TRANSITION_TYPE", \
- M4VSS3GPP_ERR_INVALID_VIDEO_TRANSITION_TYPE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INVALID_AUDIO_TRANSITION_TYPE", \
- M4VSS3GPP_ERR_INVALID_AUDIO_TRANSITION_TYPE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INVALID_VIDEO_ENCODING_FRAME_RATE", \
- M4VSS3GPP_ERR_INVALID_VIDEO_ENCODING_FRAME_RATE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_EXTERNAL_EFFECT_NULL", \
- M4VSS3GPP_ERR_EXTERNAL_EFFECT_NULL ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_EXTERNAL_TRANSITION_NULL", \
- M4VSS3GPP_ERR_EXTERNAL_TRANSITION_NULL ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_BEGIN_CUT_LARGER_THAN_DURATION", \
- M4VSS3GPP_ERR_BEGIN_CUT_LARGER_THAN_DURATION ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_BEGIN_CUT_LARGER_THAN_END_CUT", \
- M4VSS3GPP_ERR_BEGIN_CUT_LARGER_THAN_END_CUT ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_OVERLAPPING_TRANSITIONS", \
- M4VSS3GPP_ERR_OVERLAPPING_TRANSITIONS ),
-#ifdef M4VSS3GPP_ERR_ANALYSIS_DATA_SIZE_TOO_SMALL
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_ANALYSIS_DATA_SIZE_TOO_SMALL", \
- M4VSS3GPP_ERR_ANALYSIS_DATA_SIZE_TOO_SMALL ),
-#endif
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INVALID_3GPP_FILE", \
- M4VSS3GPP_ERR_INVALID_3GPP_FILE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_UNSUPPORTED_INPUT_VIDEO_FORMAT", \
- M4VSS3GPP_ERR_UNSUPPORTED_INPUT_VIDEO_FORMAT ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_UNSUPPORTED_INPUT_AUDIO_FORMAT", \
- M4VSS3GPP_ERR_UNSUPPORTED_INPUT_AUDIO_FORMAT ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_AMR_EDITING_UNSUPPORTED", \
- M4VSS3GPP_ERR_AMR_EDITING_UNSUPPORTED ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INPUT_VIDEO_AU_TOO_LARGE", \
- M4VSS3GPP_ERR_INPUT_VIDEO_AU_TOO_LARGE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INPUT_AUDIO_AU_TOO_LARGE", \
- M4VSS3GPP_ERR_INPUT_AUDIO_AU_TOO_LARGE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INPUT_AUDIO_CORRUPTED_AU", \
- M4VSS3GPP_ERR_INPUT_AUDIO_CORRUPTED_AU ),
-#ifdef M4VSS3GPP_ERR_INPUT_AUDIO_CORRUPTED_AMR_AU
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INPUT_AUDIO_CORRUPTED_AU", \
- M4VSS3GPP_ERR_INPUT_AUDIO_CORRUPTED_AMR_AU ),
-#endif
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_ENCODER_ACCES_UNIT_ERROR", \
- M4VSS3GPP_ERR_ENCODER_ACCES_UNIT_ERROR ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_EDITING_UNSUPPORTED_VIDEO_FORMAT", \
- M4VSS3GPP_ERR_EDITING_UNSUPPORTED_VIDEO_FORMAT ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_EDITING_UNSUPPORTED_H263_PROFILE", \
- M4VSS3GPP_ERR_EDITING_UNSUPPORTED_H263_PROFILE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_EDITING_UNSUPPORTED_MPEG4_PROFILE", \
- M4VSS3GPP_ERR_EDITING_UNSUPPORTED_MPEG4_PROFILE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_EDITING_UNSUPPORTED_MPEG4_RVLC", \
- M4VSS3GPP_ERR_EDITING_UNSUPPORTED_MPEG4_RVLC ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_EDITING_UNSUPPORTED_AUDIO_FORMAT", \
- M4VSS3GPP_ERR_EDITING_UNSUPPORTED_AUDIO_FORMAT ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_EDITING_NO_SUPPORTED_STREAM_IN_FILE", \
- M4VSS3GPP_ERR_EDITING_NO_SUPPORTED_STREAM_IN_FILE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_EDITING_NO_SUPPORTED_VIDEO_STREAM_IN_FILE",\
- M4VSS3GPP_ERR_EDITING_NO_SUPPORTED_VIDEO_STREAM_IN_FILE),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INVALID_CLIP_ANALYSIS_VERSION", \
- M4VSS3GPP_ERR_INVALID_CLIP_ANALYSIS_VERSION ),
-#ifdef M4VSS3GPP_ERR_INVALID_CLIP_ANALYSIS_PLATFORM
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INVALID_CLIP_ANALYSIS_PLATFORM", \
- M4VSS3GPP_ERR_INVALID_CLIP_ANALYSIS_PLATFORM ),
-#endif
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INCOMPATIBLE_VIDEO_FORMAT", \
- M4VSS3GPP_ERR_INCOMPATIBLE_VIDEO_FORMAT ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INCOMPATIBLE_VIDEO_FRAME_SIZE", \
- M4VSS3GPP_ERR_INCOMPATIBLE_VIDEO_FRAME_SIZE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INCOMPATIBLE_VIDEO_TIME_SCALE", \
- M4VSS3GPP_ERR_INCOMPATIBLE_VIDEO_TIME_SCALE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INCOMPATIBLE_VIDEO_DATA_PARTITIONING", \
- M4VSS3GPP_ERR_INCOMPATIBLE_VIDEO_DATA_PARTITIONING ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_UNSUPPORTED_MP3_ASSEMBLY", \
- M4VSS3GPP_ERR_UNSUPPORTED_MP3_ASSEMBLY ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_NO_SUPPORTED_STREAM_IN_FILE", \
- M4VSS3GPP_ERR_NO_SUPPORTED_STREAM_IN_FILE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_ADDVOLUME_EQUALS_ZERO", \
- M4VSS3GPP_ERR_ADDVOLUME_EQUALS_ZERO ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_ADDCTS_HIGHER_THAN_VIDEO_DURATION", \
- M4VSS3GPP_ERR_ADDCTS_HIGHER_THAN_VIDEO_DURATION ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_UNDEFINED_AUDIO_TRACK_FILE_FORMAT", \
- M4VSS3GPP_ERR_UNDEFINED_AUDIO_TRACK_FILE_FORMAT ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_UNSUPPORTED_ADDED_AUDIO_STREAM", \
- M4VSS3GPP_ERR_UNSUPPORTED_ADDED_AUDIO_STREAM ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_AUDIO_MIXING_UNSUPPORTED", \
- M4VSS3GPP_ERR_AUDIO_MIXING_UNSUPPORTED ),
-#ifdef M4VSS3GPP_ERR_AUDIO_MIXING_MP3_UNSUPPORTED
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_AUDIO_MIXING_MP3_UNSUPPORTED", \
- M4VSS3GPP_ERR_AUDIO_MIXING_MP3_UNSUPPORTED ),
-#endif
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_FEATURE_UNSUPPORTED_WITH_AUDIO_TRACK", \
- M4VSS3GPP_ERR_FEATURE_UNSUPPORTED_WITH_AUDIO_TRACK ),
-#ifdef M4VSS3GPP_ERR_FEATURE_UNSUPPORTED_WITH_AAC
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_FEATURE_UNSUPPORTED_WITH_AAC", \
- M4VSS3GPP_ERR_FEATURE_UNSUPPORTED_WITH_AAC ),
-#endif
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_AUDIO_CANNOT_BE_MIXED", \
- M4VSS3GPP_ERR_AUDIO_CANNOT_BE_MIXED ),
-#ifdef M4VSS3GPP_ERR_ONLY_AMRNB_INPUT_CAN_BE_MIXED
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_ONLY_AMRNB_INPUT_CAN_BE_MIXED", \
- M4VSS3GPP_ERR_ONLY_AMRNB_INPUT_CAN_BE_MIXED ),
-#endif
-#ifdef M4VSS3GPP_ERR_FEATURE_UNSUPPORTED_WITH_EVRC
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_FEATURE_UNSUPPORTED_WITH_EVRC", \
- M4VSS3GPP_ERR_FEATURE_UNSUPPORTED_WITH_EVRC ),
-#endif
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_H263_PROFILE_NOT_SUPPORTED", \
- M4VSS3GPP_ERR_H263_PROFILE_NOT_SUPPORTED ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_NO_SUPPORTED_VIDEO_STREAM_IN_FILE", \
- M4VSS3GPP_ERR_NO_SUPPORTED_VIDEO_STREAM_IN_FILE ),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ERR_INTERNAL", \
- M4NO_ERROR ),
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(Error, ERROR_CLASS_NAME,
- videoEditClasses_getUnknownErrorName, videoEditClasses_getUnknownErrorString)
-
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(FileType)
-{
- VIDEOEDIT_JAVA_CONSTANT_INIT("THREE_GPP", VideoEditClasses_kFileType_3GPP),
- VIDEOEDIT_JAVA_CONSTANT_INIT("MP4", VideoEditClasses_kFileType_MP4),
- VIDEOEDIT_JAVA_CONSTANT_INIT("AMR", VideoEditClasses_kFileType_AMR),
- VIDEOEDIT_JAVA_CONSTANT_INIT("MP3", VideoEditClasses_kFileType_MP3),
- VIDEOEDIT_JAVA_CONSTANT_INIT("PCM", VideoEditClasses_kFileType_PCM),
- VIDEOEDIT_JAVA_CONSTANT_INIT("JPG", VideoEditClasses_kFileType_JPG),
- VIDEOEDIT_JAVA_CONSTANT_INIT("GIF", VideoEditClasses_kFileType_GIF),
- VIDEOEDIT_JAVA_CONSTANT_INIT("PNG", VideoEditClasses_kFileType_PNG),
- VIDEOEDIT_JAVA_CONSTANT_INIT("M4V", VideoEditClasses_kFileType_M4V),
- VIDEOEDIT_JAVA_CONSTANT_INIT("UNSUPPORTED", VideoEditClasses_kFileType_Unsupported)
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(FileType, FILE_TYPE_CLASS_NAME, M4OSA_NULL, M4OSA_NULL)
-
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(MediaRendering)
-{
- VIDEOEDIT_JAVA_CONSTANT_INIT("RESIZING", M4xVSS_kResizing),
- VIDEOEDIT_JAVA_CONSTANT_INIT("CROPPING", M4xVSS_kCropping),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BLACK_BORDERS", M4xVSS_kBlackBorders)
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(MediaRendering, MEDIA_RENDERING_CLASS_NAME,
- M4OSA_NULL, M4OSA_NULL)
-
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(SlideDirection)
-{
- VIDEOEDIT_JAVA_CONSTANT_INIT("RIGHT_OUT_LEFT_IN", M4xVSS_SlideTransition_RightOutLeftIn),
- VIDEOEDIT_JAVA_CONSTANT_INIT("LEFT_OUT_RIGTH_IN", M4xVSS_SlideTransition_LeftOutRightIn),
- VIDEOEDIT_JAVA_CONSTANT_INIT("TOP_OUT_BOTTOM_IN", M4xVSS_SlideTransition_TopOutBottomIn),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BOTTOM_OUT_TOP_IN", M4xVSS_SlideTransition_BottomOutTopIn)
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(SlideDirection, SLIDE_DIRECTION_CLASS_NAME,
- M4OSA_NULL, M4OSA_NULL)
-
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(TransitionBehaviour)
-{
- VIDEOEDIT_JAVA_CONSTANT_INIT("SPEED_UP", M4VSS3GPP_TransitionBehaviour_SpeedUp),
- VIDEOEDIT_JAVA_CONSTANT_INIT("LINEAR", M4VSS3GPP_TransitionBehaviour_Linear),
- VIDEOEDIT_JAVA_CONSTANT_INIT("SPEED_DOWN", M4VSS3GPP_TransitionBehaviour_SpeedDown),
- VIDEOEDIT_JAVA_CONSTANT_INIT("SLOW_MIDDLE", M4VSS3GPP_TransitionBehaviour_SlowMiddle),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FAST_MIDDLE", M4VSS3GPP_TransitionBehaviour_FastMiddle)
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(TransitionBehaviour, TRANSITION_BEHAVIOUR_CLASS_NAME,
- M4OSA_NULL, M4OSA_NULL)
-
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(VideoEffect)
-{
- VIDEOEDIT_JAVA_CONSTANT_INIT("NONE", M4VSS3GPP_kVideoEffectType_None),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FADE_FROM_BLACK", M4VSS3GPP_kVideoEffectType_FadeFromBlack),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FADE_TO_BLACK", M4VSS3GPP_kVideoEffectType_FadeToBlack),
- VIDEOEDIT_JAVA_CONSTANT_INIT("EXTERNAL", M4VSS3GPP_kVideoEffectType_External),
- VIDEOEDIT_JAVA_CONSTANT_INIT("BLACK_AND_WHITE", M4xVSS_kVideoEffectType_BlackAndWhite),
- VIDEOEDIT_JAVA_CONSTANT_INIT("PINK", M4xVSS_kVideoEffectType_Pink),
- VIDEOEDIT_JAVA_CONSTANT_INIT("GREEN", M4xVSS_kVideoEffectType_Green),
- VIDEOEDIT_JAVA_CONSTANT_INIT("SEPIA", M4xVSS_kVideoEffectType_Sepia),
- VIDEOEDIT_JAVA_CONSTANT_INIT("NEGATIVE", M4xVSS_kVideoEffectType_Negative),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FRAMING", M4xVSS_kVideoEffectType_Framing),
- VIDEOEDIT_JAVA_CONSTANT_INIT("TEXT", M4xVSS_kVideoEffectType_Text),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ZOOM_IN", M4xVSS_kVideoEffectType_ZoomIn),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ZOOM_OUT", M4xVSS_kVideoEffectType_ZoomOut),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FIFTIES", M4xVSS_kVideoEffectType_Fifties),
- VIDEOEDIT_JAVA_CONSTANT_INIT("COLORRGB16", M4xVSS_kVideoEffectType_ColorRGB16),
- VIDEOEDIT_JAVA_CONSTANT_INIT("GRADIENT", M4xVSS_kVideoEffectType_Gradient),
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(VideoEffect, VIDEO_EFFECT_CLASS_NAME, M4OSA_NULL, M4OSA_NULL)
-
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(VideoFormat)
-{
- VIDEOEDIT_JAVA_CONSTANT_INIT("NO_VIDEO", M4VIDEOEDITING_kNoneVideo),
- VIDEOEDIT_JAVA_CONSTANT_INIT("H263", M4VIDEOEDITING_kH263),
- VIDEOEDIT_JAVA_CONSTANT_INIT("MPEG4", M4VIDEOEDITING_kMPEG4),
- VIDEOEDIT_JAVA_CONSTANT_INIT("H264", M4VIDEOEDITING_kH264),
- VIDEOEDIT_JAVA_CONSTANT_INIT("NULL_VIDEO", M4VIDEOEDITING_kNullVideo),
- VIDEOEDIT_JAVA_CONSTANT_INIT("UNSUPPORTED", M4VIDEOEDITING_kUnsupportedVideo),
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(VideoFormat, VIDEO_FORMAT_CLASS_NAME, M4OSA_NULL, M4OSA_NULL)
-
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(VideoFrameRate)
-{
- VIDEOEDIT_JAVA_CONSTANT_INIT("FR_5_FPS", M4VIDEOEDITING_k5_FPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FR_7_5_FPS", M4VIDEOEDITING_k7_5_FPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FR_10_FPS", M4VIDEOEDITING_k10_FPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FR_12_5_FPS", M4VIDEOEDITING_k12_5_FPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FR_15_FPS", M4VIDEOEDITING_k15_FPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FR_20_FPS", M4VIDEOEDITING_k20_FPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FR_25_FPS", M4VIDEOEDITING_k25_FPS),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FR_30_FPS", M4VIDEOEDITING_k30_FPS)
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(VideoFrameRate, VIDEO_FRAME_RATE_CLASS_NAME,
- M4OSA_NULL, M4OSA_NULL)
-
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(VideoFrameSize)
-{
- VIDEOEDIT_JAVA_CONSTANT_INIT("SQCIF", M4VIDEOEDITING_kSQCIF),
- VIDEOEDIT_JAVA_CONSTANT_INIT("QQVGA", M4VIDEOEDITING_kQQVGA),
- VIDEOEDIT_JAVA_CONSTANT_INIT("QCIF", M4VIDEOEDITING_kQCIF),
- VIDEOEDIT_JAVA_CONSTANT_INIT("QVGA", M4VIDEOEDITING_kQVGA),
- VIDEOEDIT_JAVA_CONSTANT_INIT("CIF", M4VIDEOEDITING_kCIF),
- VIDEOEDIT_JAVA_CONSTANT_INIT("VGA", M4VIDEOEDITING_kVGA),
- VIDEOEDIT_JAVA_CONSTANT_INIT("WVGA", M4VIDEOEDITING_kWVGA),
- VIDEOEDIT_JAVA_CONSTANT_INIT("NTSC", M4VIDEOEDITING_kNTSC),
- VIDEOEDIT_JAVA_CONSTANT_INIT("nHD", M4VIDEOEDITING_k640_360),
- VIDEOEDIT_JAVA_CONSTANT_INIT("WVGA16x9", M4VIDEOEDITING_k854_480),
- VIDEOEDIT_JAVA_CONSTANT_INIT("V720p", M4VIDEOEDITING_k1280_720),
- VIDEOEDIT_JAVA_CONSTANT_INIT("W720p", M4VIDEOEDITING_k1080_720),
- VIDEOEDIT_JAVA_CONSTANT_INIT("S720p", M4VIDEOEDITING_k960_720),
- VIDEOEDIT_JAVA_CONSTANT_INIT("V1080p", M4VIDEOEDITING_k1920_1080)
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(VideoFrameSize, VIDEO_FRAME_SIZE_CLASS_NAME,
- M4OSA_NULL, M4OSA_NULL)
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANTS(VideoTransition)
-{
- VIDEOEDIT_JAVA_CONSTANT_INIT("NONE", M4VSS3GPP_kVideoTransitionType_None),
- VIDEOEDIT_JAVA_CONSTANT_INIT("CROSS_FADE", M4VSS3GPP_kVideoTransitionType_CrossFade),
- VIDEOEDIT_JAVA_CONSTANT_INIT("EXTERNAL", M4VSS3GPP_kVideoTransitionType_External),
- VIDEOEDIT_JAVA_CONSTANT_INIT("ALPHA_MAGIC", M4xVSS_kVideoTransitionType_AlphaMagic),
- VIDEOEDIT_JAVA_CONSTANT_INIT("SLIDE_TRANSITION", M4xVSS_kVideoTransitionType_SlideTransition),
- VIDEOEDIT_JAVA_CONSTANT_INIT("FADE_BLACK", M4xVSS_kVideoTransitionType_FadeBlack)
-};
-
-VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS(VideoTransition, VIDEO_TRANSITION_CLASS_NAME,
- M4OSA_NULL, M4OSA_NULL)
-
-
-VIDEOEDIT_JAVA_DEFINE_FIELDS(AlphaMagic)
-{
- VIDEOEDIT_JAVA_FIELD_INIT("file", "Ljava/lang/String;"),
- VIDEOEDIT_JAVA_FIELD_INIT("blendingPercent", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("invertRotation", "Z" ),
- VIDEOEDIT_JAVA_FIELD_INIT("rgbWidth", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("rgbHeight", "I" )
-};
-
-VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(AlphaMagic, ALPHA_MAGIC_SETTINGS_CLASS_NAME)
-
-VIDEOEDIT_JAVA_DEFINE_FIELDS(Properties)
-{
- VIDEOEDIT_JAVA_FIELD_INIT("duration", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("fileType", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("videoFormat", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("videoDuration", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("videoBitrate", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("width", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("height", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("averageFrameRate", "F"),
- VIDEOEDIT_JAVA_FIELD_INIT("profile", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("level", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("profileSupported", "Z"),
- VIDEOEDIT_JAVA_FIELD_INIT("levelSupported", "Z"),
- VIDEOEDIT_JAVA_FIELD_INIT("audioFormat", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("audioDuration", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("audioBitrate", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("audioChannels", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("audioSamplingFrequency", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("videoRotation", "I")
-};
-
-VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(Properties, PROPERTIES_CLASS_NAME)
-
-VIDEOEDIT_JAVA_DEFINE_FIELDS(BackgroundMusic)
-{
- VIDEOEDIT_JAVA_FIELD_INIT("file", "Ljava/lang/String;"),
- VIDEOEDIT_JAVA_FIELD_INIT("fileType", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("insertionTime", "J" ),
- VIDEOEDIT_JAVA_FIELD_INIT("volumePercent", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("beginLoop", "J" ),
- VIDEOEDIT_JAVA_FIELD_INIT("endLoop", "J" ),
- VIDEOEDIT_JAVA_FIELD_INIT("enableDucking", "Z" ),
- VIDEOEDIT_JAVA_FIELD_INIT("duckingThreshold","I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("lowVolume", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("isLooping", "Z" )
-};
-
-VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(BackgroundMusic, BACKGROUND_MUSIC_SETTINGS_CLASS_NAME)
-
-/*
-VIDEOEDIT_JAVA_DEFINE_FIELDS(BestEditSettings)
-{
- VIDEOEDIT_JAVA_FIELD_INIT("videoFormat", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("videoFrameSize", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("audioFormat", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("audioChannels", "I")
-};
-
-VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(BestEditSettings, BEST_EDIT_SETTINGS_CLASS_NAME)
-*/
-
-VIDEOEDIT_JAVA_DEFINE_FIELDS(ClipSettings)
-{
- VIDEOEDIT_JAVA_FIELD_INIT("clipPath", "Ljava/lang/String;"),
- VIDEOEDIT_JAVA_FIELD_INIT("fileType", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("beginCutTime", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("endCutTime", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("beginCutPercent", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("endCutPercent", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("panZoomEnabled", "Z" ),
- VIDEOEDIT_JAVA_FIELD_INIT("panZoomPercentStart", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("panZoomTopLeftXStart", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("panZoomTopLeftYStart", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("panZoomPercentEnd", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("panZoomTopLeftXEnd", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("panZoomTopLeftYEnd", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("mediaRendering", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("rgbWidth", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("rgbHeight", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("rotationDegree", "I" )
-};
-
-VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(ClipSettings, CLIP_SETTINGS_CLASS_NAME)
-
-
-VIDEOEDIT_JAVA_DEFINE_FIELDS(EditSettings)
-{
- VIDEOEDIT_JAVA_FIELD_INIT("clipSettingsArray", "[L"CLIP_SETTINGS_CLASS_NAME";" ),
- VIDEOEDIT_JAVA_FIELD_INIT("transitionSettingsArray", "[L"TRANSITION_SETTINGS_CLASS_NAME";" ),
- VIDEOEDIT_JAVA_FIELD_INIT("effectSettingsArray", "[L"EFFECT_SETTINGS_CLASS_NAME";" ),
- VIDEOEDIT_JAVA_FIELD_INIT("videoFrameRate", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("outputFile", "Ljava/lang/String;" ),
- VIDEOEDIT_JAVA_FIELD_INIT("videoFrameSize", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("videoFormat", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("videoProfile", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("videoLevel", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("audioFormat", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("audioSamplingFreq", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("maxFileSize", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("audioChannels", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("videoBitrate", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("audioBitrate", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("backgroundMusicSettings",\
- "L"BACKGROUND_MUSIC_SETTINGS_CLASS_NAME";"),
- VIDEOEDIT_JAVA_FIELD_INIT("primaryTrackVolume", "I" )
-};
-
-VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(EditSettings, EDIT_SETTINGS_CLASS_NAME)
-
-
-VIDEOEDIT_JAVA_DEFINE_FIELDS(EffectSettings)
-{
- VIDEOEDIT_JAVA_FIELD_INIT("startTime", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("duration", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("videoEffectType", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("audioEffectType", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("startPercent", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("durationPercent", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("framingFile", "Ljava/lang/String;"),
- VIDEOEDIT_JAVA_FIELD_INIT("framingBuffer", "[I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("bitmapType", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("width", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("height", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("topLeftX", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("topLeftY", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("framingResize", "Z" ),
- VIDEOEDIT_JAVA_FIELD_INIT("framingScaledSize", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("text", "Ljava/lang/String;"),
- VIDEOEDIT_JAVA_FIELD_INIT("textRenderingData", "Ljava/lang/String;"),
- VIDEOEDIT_JAVA_FIELD_INIT("textBufferWidth", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("textBufferHeight", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("fiftiesFrameRate", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("rgb16InputColor", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("alphaBlendingStartPercent", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("alphaBlendingMiddlePercent", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("alphaBlendingEndPercent", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("alphaBlendingFadeInTimePercent", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("alphaBlendingFadeOutTimePercent", "I" )
-};
-
-VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(EffectSettings, EFFECT_SETTINGS_CLASS_NAME)
-
-
-VIDEOEDIT_JAVA_DEFINE_FIELDS(Engine)
-{
- VIDEOEDIT_JAVA_FIELD_INIT("mManualEditContext", "J")
-};
-
-VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(Engine, MANUAL_EDIT_ENGINE_CLASS_NAME)
-
-
-VIDEOEDIT_JAVA_DEFINE_FIELDS(SlideTransitionSettings)
-{
- VIDEOEDIT_JAVA_FIELD_INIT("direction", "I")
-};
-
-VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(SlideTransitionSettings, SLIDE_TRANSITION_SETTINGS_CLASS_NAME)
-
-
-VIDEOEDIT_JAVA_DEFINE_FIELDS(TransitionSettings)
-{
- VIDEOEDIT_JAVA_FIELD_INIT("duration", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("videoTransitionType", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("audioTransitionType", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("transitionBehaviour", "I" ),
- VIDEOEDIT_JAVA_FIELD_INIT("alphaSettings", "L"ALPHA_MAGIC_SETTINGS_CLASS_NAME";" ),
- VIDEOEDIT_JAVA_FIELD_INIT("slideSettings", "L"SLIDE_TRANSITION_SETTINGS_CLASS_NAME";")
-};
-
-VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(TransitionSettings, TRANSITION_SETTINGS_CLASS_NAME)
-
-
-VIDEOEDIT_JAVA_DEFINE_FIELDS(Version)
-{
- VIDEOEDIT_JAVA_FIELD_INIT("major", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("minor", "I"),
- VIDEOEDIT_JAVA_FIELD_INIT("revision", "I")
-};
-
-VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(Version, VERSION_CLASS_NAME)
-
-
-VIDEOEDIT_JAVA_DEFINE_METHODS(Engine)
-{
- VIDEOEDIT_JAVA_METHOD_INIT("onProgressUpdate", "(II)V")
-};
-
-VIDEOEDIT_JAVA_DEFINE_METHOD_CLASS(Engine, MANUAL_EDIT_ENGINE_CLASS_NAME)
-
-
-static const char*
-videoEditClasses_getBrandString(M4OSA_UInt32 brand)
-{
- static char brandString[11] = "0x00000000";
- const char* pBrandString = M4OSA_NULL;
- M4OSA_UInt8* pBrand = (M4OSA_UInt8*)&brand;
- M4OSA_UInt32 brandHost = 0;
-
- // Convert the brand from big endian to host.
- brandHost = pBrand[0];
- brandHost = brandHost << 8;
- brandHost += pBrand[1];
- brandHost = brandHost << 8;
- brandHost += pBrand[2];
- brandHost = brandHost << 8;
- brandHost += pBrand[3];
-
- switch (brandHost)
- {
- case M4VIDEOEDITING_BRAND_0000:
- pBrandString = "0000";
- break;
- case M4VIDEOEDITING_BRAND_3G2A:
- pBrandString = "3G2A";
- break;
- case M4VIDEOEDITING_BRAND_3GP4:
- pBrandString = "3GP4";
- break;
- case M4VIDEOEDITING_BRAND_3GP5:
- pBrandString = "3GP5";
- break;
- case M4VIDEOEDITING_BRAND_3GP6:
- pBrandString = "3GP6";
- break;
- case M4VIDEOEDITING_BRAND_AVC1:
- pBrandString = "AVC1";
- break;
- case M4VIDEOEDITING_BRAND_EMP:
- pBrandString = "EMP";
- break;
- case M4VIDEOEDITING_BRAND_ISOM:
- pBrandString = "ISOM";
- break;
- case M4VIDEOEDITING_BRAND_MP41:
- pBrandString = "MP41";
- break;
- case M4VIDEOEDITING_BRAND_MP42:
- pBrandString = "MP42";
- break;
- case M4VIDEOEDITING_BRAND_VFJ1:
- pBrandString = "VFJ1";
- break;
- default:
- M4OSA_chrSPrintf((M4OSA_Char *)brandString,
- sizeof(brandString) - 1,
- (M4OSA_Char*)"0x%08X", brandHost);
- pBrandString = brandString;
- break;
- }
-
- // Return the brand string.
- return(pBrandString);
-}
-
-#ifdef VIDEOEDIT_LOGGING_ENABLED
-static void
-videoEditClasses_logFtypBox(
- M4VIDEOEDITING_FtypBox* pBox,
- int indentation)
-{
- // Check if memory was allocated for the FtypBox.
- if (M4OSA_NULL != pBox)
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c major_brand: %s", indentation, ' ',
- videoEditClasses_getBrandString(pBox->major_brand));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c minor_version: %08X", indentation, ' ',
- (unsigned int)pBox->minor_version);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c nbCompatibleBrands: %u", indentation, ' ',
- (unsigned int)pBox->nbCompatibleBrands);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c compatible_brands:", indentation, ' ');
- indentation += VIDEOEDIT_LOG_INDENTATION;
- for (int i = 0; (i < (int)pBox->nbCompatibleBrands) &&\
- (i < M4VIDEOEDITING_MAX_COMPATIBLE_BRANDS); i++)
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c compatible_brand[%d]: %s", indentation, ' ',
- i, videoEditClasses_getBrandString(pBox->compatible_brands[i]));
- }
- indentation -= VIDEOEDIT_LOG_INDENTATION;
- }
- else
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES", "%*c <null>",
- indentation, ' ');
- }
-}
-#endif
-
-
-void
-videoEditClasses_init(
- bool* pResult,
- JNIEnv* pEnv)
-{
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",\
- "videoEditClasses_init()");
-
- // Initialize the constants.
- videoEditJava_initAudioEffectConstants(pResult, pEnv);
- videoEditJava_initAudioFormatConstants(pResult, pEnv);
- videoEditJava_initAudioSamplingFrequencyConstants(pResult, pEnv);
- videoEditJava_initAudioTransitionConstants(pResult, pEnv);
- videoEditJava_initBitrateConstants(pResult, pEnv);
- videoEditJava_initClipTypeConstants(pResult, pEnv);
- videoEditJava_initEngineConstants(pResult, pEnv);
- videoEditJava_initErrorConstants(pResult, pEnv);
- videoEditJava_initFileTypeConstants(pResult, pEnv);
- videoEditJava_initMediaRenderingConstants(pResult, pEnv);
- videoEditJava_initSlideDirectionConstants(pResult, pEnv);
- videoEditJava_initTransitionBehaviourConstants(pResult, pEnv);
- videoEditJava_initVideoEffectConstants(pResult, pEnv);
- videoEditJava_initVideoFormatConstants(pResult, pEnv);
- videoEditJava_initVideoFrameRateConstants(pResult, pEnv);
- videoEditJava_initVideoFrameSizeConstants(pResult, pEnv);
- videoEditJava_initVideoTransitionConstants(pResult, pEnv);
-
- // Initialize the fields.
- videoEditJava_initAlphaMagicFields(pResult, pEnv);
- videoEditJava_initBackgroundMusicFields(pResult, pEnv);
- videoEditJava_initClipSettingsFields(pResult, pEnv);
- videoEditJava_initEditSettingsFields(pResult, pEnv);
- videoEditJava_initEffectSettingsFields(pResult, pEnv);
- videoEditJava_initEngineFields(pResult, pEnv);
- videoEditJava_initSlideTransitionSettingsFields(pResult, pEnv);
- videoEditJava_initTransitionSettingsFields(pResult, pEnv);
- videoEditJava_initVersionFields(pResult, pEnv);
- // Initialize the methods.
- videoEditJava_initEngineMethods(pResult, pEnv);
- }
-}
-
-void
-videoEditPropClass_init(
- bool* pResult,
- JNIEnv* pEnv)
-{
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_PROP_CLASSES",\
- "videoEditPropClass_init()");
-
- // Initialize the constants.
- videoEditJava_initAudioFormatConstants(pResult, pEnv);
- videoEditJava_initErrorConstants(pResult, pEnv);
- videoEditJava_initFileTypeConstants(pResult, pEnv);
- videoEditJava_initVideoFormatConstants(pResult, pEnv);
-
- // Initialize the fields.
- videoEditJava_initPropertiesFields(pResult, pEnv);
- }
-}
-
-void
-videoEditClasses_getAlphaMagicSettings(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- M4xVSS_AlphaMagicSettings** ppSettings)
-{
- VideoEditJava_AlphaMagicFieldIds fieldIds;
- M4xVSS_AlphaMagicSettings* pSettings = M4OSA_NULL;
- memset(&fieldIds, 0, sizeof(VideoEditJava_AlphaMagicFieldIds));
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_getAlphaMagicSettings()");
-
- // Retrieve the field ids.
- videoEditJava_getAlphaMagicFieldIds(pResult, pEnv, &fieldIds);
- }
-
- // Only validate the AlphaMagicSettings if the fields could be located.
- if (*pResult)
- {
- // Check if the clip is set.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- (NULL == object),
- "alphaSettings is null");
- }
-
- // Only retrieve the AlphaMagicSettings if the fields could be located and validated.
- if (*pResult)
- {
- // Allocate memory for the AlphaMagicSettings.
- pSettings = (M4xVSS_AlphaMagicSettings*)videoEditOsal_alloc(pResult, pEnv,
- sizeof(M4xVSS_AlphaMagicSettings), "AlphaMagicSettings");
-
- // Check if memory could be allocated for the AlphaMagicSettings.
- if (*pResult)
- {
- // Set the alpha magic file path (JPG file).
- pSettings->pAlphaFilePath = (M4OSA_Char*)videoEditJava_getString(pResult, pEnv, object,
- fieldIds.file, M4OSA_NULL);
-
- // Check if the alpha magic file path is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- (M4OSA_NULL == pSettings->pAlphaFilePath), "alphaSettings.file is null");
- }
-
- // Check if the alpha file path could be retrieved.
- if (*pResult)
- {
- // Set the blending percentage between 0 and 100.
- pSettings->blendingPercent = (M4OSA_UInt8)pEnv->GetIntField(object,
- fieldIds.blendingPercent);
-
- // Set the direct effect or reverse.
- pSettings->isreverse = (M4OSA_Bool)pEnv->GetBooleanField(object,
- fieldIds.invertRotation);
-
- // Get the rgb width
- pSettings->width = (M4OSA_UInt32) pEnv->GetIntField(object, fieldIds.rgbWidth );
-
- pSettings->height = (M4OSA_UInt32) pEnv->GetIntField(object, fieldIds.rgbHeight );
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "((((((((((path %s", pSettings->pAlphaFilePath);
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "------- getAlphaMagicSettings width %d", pEnv->GetIntField(object,
- fieldIds.rgbWidth ));
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "-------- getAlphaMagicSettings Height %d",
- pEnv->GetIntField(object, fieldIds.rgbHeight ));
- }
-
- // Check if settings could be set.
- if (*pResult)
- {
- // Return the settings.
- (*ppSettings) = pSettings;
- }
- else
- {
- // Free the settings.
- videoEditClasses_freeAlphaMagicSettings(&pSettings);
- }
- }
-}
-
-void
-videoEditClasses_freeAlphaMagicSettings(
- M4xVSS_AlphaMagicSettings** ppSettings)
-{
- // Check if memory was allocated for the AlphaMagicSettings.
- if (M4OSA_NULL != (*ppSettings))
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_freeAlphaMagicSettings()");
-
- // Free the alpha file path.
- videoEditOsal_free((*ppSettings)->pAlphaFilePath);
- (*ppSettings)->pAlphaFilePath = M4OSA_NULL;
-
- // Free the settings structure.
- videoEditOsal_free((*ppSettings));
- (*ppSettings) = M4OSA_NULL;
- }
-}
-
-#ifdef VIDEOEDIT_LOGGING_ENABLED
-void
-videoEditClasses_logAlphaMagicSettings(
- M4xVSS_AlphaMagicSettings* pSettings,
- int indentation)
-{
- // Check if memory was allocated for the AlphaMagicSettings.
- if (M4OSA_NULL != pSettings)
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pAlphaFilePath: %s", indentation, ' ',
- (M4OSA_NULL != pSettings->pAlphaFilePath) ? \
- (char *)pSettings->pAlphaFilePath : "<null>");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c blendingPercent: %u %%", indentation, ' ',
- (unsigned int)pSettings->blendingPercent);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c isreverse: %s", indentation, ' ',
- pSettings->isreverse ? "true" : "false");
- }
- else
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c <null>", indentation, ' ');
- }
-}
-#endif
-
-
-void
-videoEditClasses_getBackgroundMusicSettings(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- M4xVSS_BGMSettings** ppSettings)
-{
- VideoEditJava_BackgroundMusicFieldIds fieldIds;
- M4xVSS_BGMSettings* pSettings = M4OSA_NULL;
- bool converted = true;
- memset(&fieldIds, 0, sizeof(VideoEditJava_BackgroundMusicFieldIds));
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_getBackgroundMusicSettings()");
-
- // Retrieve the field ids.
- videoEditJava_getBackgroundMusicFieldIds(pResult, pEnv, &fieldIds);
- }
-
- // Only retrieve the BackgroundMusicSettings if the fields could be located.
- if (*pResult)
- {
- // Check if the object is valid.
- if (NULL != object)
- {
- // Allocate memory for the BackgroundMusicSettings.
- pSettings = (M4xVSS_BGMSettings*)videoEditOsal_alloc(pResult, pEnv,
- sizeof(M4xVSS_BGMSettings), "BackgroundMusicSettings");
-
- // Check if memory could be allocated for the BackgroundMusicSettings.
- if (*pResult)
- {
- // Set the input file path.
- pSettings->pFile = (M4OSA_Char*)videoEditJava_getString(pResult, pEnv, object,
- fieldIds.file, M4OSA_NULL);
-
- // Check if the input file path is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- (M4OSA_NULL == pSettings->pFile), "backgroundMusicSettings.file is null");
- }
-
- // Check if the input file path could be retrieved.
- if (*pResult)
- {
- // Set the file type .3gp, .amr, .mp3.
- pSettings->FileType = M4VIDEOEDITING_kFileType_PCM;
- /*(M4VIDEOEDITING_FileType)videoEditJava_getClipTypeJavaToC(
- &converted, pEnv->GetIntField(object, fieldIds.fileType));*/
-
- // Check if the file type is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- !converted, "backgroundMusicSettings.fileType is invalid");
- }
-
- // Check if the file type could be retrieved.
- if (*pResult)
- {
- // Set the time, in milliseconds, at which the added audio track is inserted.
- pSettings->uiAddCts = (M4OSA_UInt32)pEnv->GetLongField(object,
- fieldIds.insertionTime);
-
- // Set the volume, in percentage (0..100), of the added audio track.
- pSettings->uiAddVolume = (M4OSA_UInt32)pEnv->GetIntField(object,
- fieldIds.volumePercent);
-
- // Set the start time of the loop in milli seconds.
- pSettings->uiBeginLoop = (M4OSA_UInt32)pEnv->GetLongField(object,
- fieldIds.beginLoop);
-
- // Set the end time of the loop in milli seconds.
- pSettings->uiEndLoop = (M4OSA_UInt32)pEnv->GetLongField(object,
- fieldIds.endLoop);
- // Set the end time of the loop in milli seconds.
- pSettings->b_DuckingNeedeed =
- (M4OSA_Bool)pEnv->GetBooleanField(object, fieldIds.enableDucking);
-
- // Set the end time of the loop in milli seconds.
- pSettings->InDucking_threshold =
- (M4OSA_Int32)pEnv->GetIntField(object, fieldIds.duckingThreshold);
-
- // Set the end time of the loop in milli seconds.
- pSettings->lowVolume =
- (M4OSA_Float)(((M4OSA_Float)pEnv->GetIntField(object, fieldIds.lowVolume)));
-
- // Set the end time of the loop in milli seconds.
- pSettings->bLoop = (M4OSA_Bool)pEnv->GetBooleanField(object, fieldIds.isLooping);
-
- // Set sampling freq and channels
- pSettings->uiSamplingFrequency = M4VIDEOEDITING_k32000_ASF;
- pSettings->uiNumChannels = 2;
- }
-
- // Check if settings could be set.
- if (*pResult)
- {
- // Return the settings.
- (*ppSettings) = pSettings;
- }
- else
- {
- // Free the settings.
- videoEditClasses_freeBackgroundMusicSettings(&pSettings);
- }
- }
- }
-}
-
-void
-videoEditClasses_freeBackgroundMusicSettings(
- M4xVSS_BGMSettings** ppSettings)
-{
- // Check if memory was allocated for the BackgroundMusicSettings.
- if (M4OSA_NULL != (*ppSettings))
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_freeBackgroundMusicSettings()");
-
- // Free the input file path.
- videoEditOsal_free((*ppSettings)->pFile);
- (*ppSettings)->pFile = M4OSA_NULL;
-
- // Free the settings structure.
- videoEditOsal_free((*ppSettings));
- (*ppSettings) = M4OSA_NULL;
- }
-}
-
-#ifdef VIDEOEDIT_LOGGING_ENABLED
-void
-videoEditClasses_logBackgroundMusicSettings(
- M4xVSS_BGMSettings* pSettings,
- int indentation)
-{
- // Check if memory was allocated for the BackgroundMusicSettings.
- if (M4OSA_NULL != pSettings)
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES", "%*c pFile: %s",
- indentation, ' ',
- (M4OSA_NULL != pSettings->pFile) ? (char *)pSettings->pFile : "<null>");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c FileType: %s", indentation, ' ',
- videoEditJava_getClipTypeString(pSettings->FileType));
-
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES", "%*c uiAddCts: %u ms",
- indentation, ' ', (unsigned int)pSettings->uiAddCts);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES", "%*c uiAddVolume: %u %%",
- indentation, ' ', (unsigned int)pSettings->uiAddVolume);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES", "%*c uiBeginLoop: %u ms",
- indentation, ' ', (unsigned int)pSettings->uiBeginLoop);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES", "%*c uiEndLoop: %u ms",
- indentation, ' ', (unsigned int)pSettings->uiEndLoop);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES", "%*c b_DuckingNeedeed:\
- %u ", indentation, ' ', (bool)pSettings->b_DuckingNeedeed);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES", "%*c InDucking_threshold: \
- %u ms", indentation, ' ', (unsigned int)pSettings->InDucking_threshold);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES", "%*c lowVolume: %2.2f ",\
- indentation, ' ', (float)pSettings->lowVolume);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES", "%*c bLoop: %u ms",\
- indentation, ' ', (bool)pSettings->bLoop);
- }
- else
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES", "%*c <null>",
- indentation, ' ');
- }
-}
-#endif
-
-#ifdef VIDEOEDIT_LOGGING_ENABLED
-void
-videoEditClasses_logClipProperties(
- M4VIDEOEDITING_ClipProperties* pProperties,
- int indentation)
-{
- // Check if memory was allocated for the ClipProperties.
- if (M4OSA_NULL != pProperties)
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c bAnalysed: %s", indentation, ' ',
- pProperties->bAnalysed ? "true" : "false");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c Version: %d.%d.%d", indentation, ' ',
- pProperties->Version[0], pProperties->Version[1], pProperties->Version[2]);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiClipDuration: %u", indentation, ' ',
- (unsigned int)pProperties->uiClipDuration);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c FileType: %s", indentation, ' ',
- videoEditJava_getClipTypeString(pProperties->FileType));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES", "%*c ftyp:",
- indentation, ' ');
- videoEditClasses_logFtypBox(&pProperties->ftyp, indentation + VIDEOEDIT_LOG_INDENTATION);
-
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c VideoStreamType: %s", indentation, ' ',
- videoEditJava_getVideoFormatString(pProperties->VideoStreamType));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiClipVideoDuration: %u", indentation, ' ',
- (unsigned int)pProperties->uiClipVideoDuration);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiVideoBitrate: %s", indentation, ' ',
- videoEditJava_getBitrateString(pProperties->uiVideoBitrate));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiVideoMaxAuSize: %u", indentation, ' ',
- (unsigned int)pProperties->uiVideoMaxAuSize);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiVideoWidth: %u", indentation, ' ',
- (unsigned int)pProperties->uiVideoWidth);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiVideoHeight: %u", indentation, ' ',
- (unsigned int)(unsigned int)pProperties->uiVideoHeight);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiVideoTimeScale: %u", indentation, ' ',
- (unsigned int)pProperties->uiVideoTimeScale);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c fAverageFrameRate: %.3f", indentation, ' ',
- pProperties->fAverageFrameRate);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c bMPEG4dataPartition: %s", indentation, ' ',
- pProperties->bMPEG4dataPartition ? "true" : "false");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c bMPEG4rvlc: %s", indentation, ' ',
- pProperties->bMPEG4rvlc ? "true" : "false");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c bMPEG4resynchMarker: %s", indentation, ' ',
- pProperties->bMPEG4resynchMarker ? "true" : "false");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c AudioStreamType: %s", indentation, ' ',
- videoEditJava_getAudioFormatString(pProperties->AudioStreamType));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiClipAudioDuration: %u", indentation, ' ',
- (unsigned int)pProperties->uiClipAudioDuration);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiAudioBitrate: %s", indentation, ' ',
- videoEditJava_getBitrateString(pProperties->uiAudioBitrate));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiAudioMaxAuSize: %u", indentation, ' ',
- (unsigned int)pProperties->uiAudioMaxAuSize);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiNbChannels: %u", indentation, ' ',
- (unsigned int)pProperties->uiNbChannels);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiSamplingFrequency: %u", indentation, ' ',
- (unsigned int)pProperties->uiSamplingFrequency);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiExtendedSamplingFrequency: %u", indentation, ' ',
- (unsigned int)pProperties->uiExtendedSamplingFrequency);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiDecodedPcmSize: %u", indentation, ' ',
- (unsigned int)pProperties->uiDecodedPcmSize);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c bVideoIsEditable: %s", indentation, ' ',
- pProperties->bVideoIsEditable ? "true" : "false");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c bAudioIsEditable: %s", indentation, ' ',
- pProperties->bAudioIsEditable ? "true" : "false");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c bVideoIsCompatibleWithMasterClip: %s", indentation, ' ',
- pProperties->bVideoIsCompatibleWithMasterClip ? "true" : "false");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c bAudioIsCompatibleWithMasterClip: %s", indentation, ' ',
- pProperties->bAudioIsCompatibleWithMasterClip ? "true" : "false");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiClipAudioVolumePercentage: %d", indentation, ' ',
- pProperties->uiClipAudioVolumePercentage);
- }
- else
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES", "%*c <null>",
- indentation, ' ');
- }
-}
-#endif
-
-void
-videoEditClasses_getClipSettings(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- M4VSS3GPP_ClipSettings** ppSettings)
-{
-
- VideoEditJava_ClipSettingsFieldIds fieldIds;
- M4VSS3GPP_ClipSettings* pSettings = M4OSA_NULL;
- M4OSA_ERR result = M4NO_ERROR;
- bool converted = true;
- memset(&fieldIds, 0, sizeof(VideoEditJava_ClipSettingsFieldIds));
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_getClipSettings()");
-
- // Retrieve the field ids.
- videoEditJava_getClipSettingsFieldIds(pResult, pEnv, &fieldIds);
- }
-
- // Only validate the ClipSettings if the fields could be located.
- if (*pResult)
- {
- // Check if the clip is set.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- (NULL == object),
- "clip is null");
- }
-
- // Only retrieve the ClipSettings if the fields could be located and validated.
- if (*pResult)
- {
- // Allocate memory for the ClipSettings.
- pSettings = (M4VSS3GPP_ClipSettings *)videoEditOsal_alloc(pResult, pEnv,
- sizeof(M4VSS3GPP_ClipSettings), "ClipSettings");
-
- // Check if memory could be allocated for the ClipSettings.
- if (*pResult)
- {
- // Log the API call.
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR", "M4xVSS_CreateClipSettings()");
-
- // Initialize the ClipSettings.
- result = M4xVSS_CreateClipSettings(pSettings, NULL, 0, 0);
-
- // Log the result.
- VIDEOEDIT_LOG_RESULT(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- videoEditOsal_getResultString(result));
-
- // Check if the initialization succeeded.
- videoEditJava_checkAndThrowRuntimeException(pResult, pEnv,
- (M4NO_ERROR != result), result);
- }
-
- // Check if the allocation and initialization succeeded
- //(required because pSettings is dereferenced).
- if (*pResult)
- {
- // Set the input file path.
- pSettings->pFile = (M4OSA_Char*)videoEditJava_getString(pResult, pEnv, object,
- fieldIds.clipPath, &pSettings->filePathSize);
-
- // Check if the file path is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- (M4OSA_NULL == pSettings->pFile), "clip.clipPath is null");
- }
-
- // Check if the input file could be retrieved.
- if (*pResult)
- {
- // Set the file type .3gp, .amr, .mp3.
- pSettings->FileType = (M4VIDEOEDITING_FileType)videoEditJava_getClipTypeJavaToC(
- &converted, pEnv->GetIntField(object, fieldIds.fileType));
-
- if (( pSettings->FileType == M4VIDEOEDITING_kFileType_JPG) ||
- ( pSettings->FileType == M4VIDEOEDITING_kFileType_PNG)) {
- pSettings->FileType = M4VIDEOEDITING_kFileType_ARGB8888;
- }
-
- // Check if the file type is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- !converted, "clip.fileType is invalid");
- }
-
- // Check if the file type could be retrieved.
- if (*pResult)
- {
- // Set the begin cut time, in milliseconds.
- pSettings->uiBeginCutTime =
- (M4OSA_UInt32)pEnv->GetIntField(object, fieldIds.beginCutTime);
-
- // Set the end cut time, in milliseconds.
- pSettings->uiEndCutTime = (M4OSA_UInt32)pEnv->GetIntField(object, fieldIds.endCutTime);
-
- // Set the begin cut time, in percent of clip duration (only for 3GPP clip !).
- pSettings->xVSS.uiBeginCutPercent =
- (M4OSA_UInt32)pEnv->GetIntField(object, fieldIds.beginCutPercent);
-
- // Set the end cut time, in percent of clip duration (only for 3GPP clip !).
- pSettings->xVSS.uiEndCutPercent =
- (M4OSA_UInt32)pEnv->GetIntField(object, fieldIds.endCutPercent);
-
- // Set the duration of the clip, if different from 0,
- // has priority on uiEndCutTime or uiEndCutPercent.
- pSettings->xVSS.uiDuration = 0;
-
- // Set whether or not the pan and zoom mode is enabled.
- pSettings->xVSS.isPanZoom =
- (M4OSA_Bool)pEnv->GetBooleanField(object, fieldIds.panZoomEnabled);
-
- // Set the pan and zoom start zoom percentage.
- pSettings->xVSS.PanZoomXa =
- (M4OSA_UInt16)pEnv->GetIntField(object, fieldIds.panZoomPercentStart);
-
- // Set the pan and zoom start x.
- pSettings->xVSS.PanZoomTopleftXa =
- (M4OSA_UInt16)pEnv->GetIntField(object, fieldIds.panZoomTopLeftXStart);
-
- // Set the pan and zoom start y.
- pSettings->xVSS.PanZoomTopleftYa =
- (M4OSA_UInt16)pEnv->GetIntField(object, fieldIds.panZoomTopLeftYStart);
-
- // Set the pan and zoom end zoom percentage.
- pSettings->xVSS.PanZoomXb =
- (M4OSA_UInt16)pEnv->GetIntField(object, fieldIds.panZoomPercentEnd);
-
- // Set the pan and zoom end x.
- pSettings->xVSS.PanZoomTopleftXb =
- (M4OSA_UInt16)pEnv->GetIntField(object, fieldIds.panZoomTopLeftXEnd);
-
- // Set the pan and zoom end y.
- pSettings->xVSS.PanZoomTopleftYb =
- (M4OSA_UInt16)pEnv->GetIntField(object, fieldIds.panZoomTopLeftYEnd);
-
- // Set the media rendering mode, only used with JPEG to crop, resize,
- // or render black borders.
- pSettings->xVSS.MediaRendering =
- (M4xVSS_MediaRendering)videoEditJava_getMediaRenderingJavaToC(
- &converted, pEnv->GetIntField(object,fieldIds.mediaRendering));
-
- // Check if the media rendering is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, !converted,
- "clip.mediaRendering is invalid");
-
- // Capture the rgb file width and height
- pSettings->ClipProperties.uiStillPicWidth =
- (M4OSA_UInt16)pEnv->GetIntField(object, fieldIds.rgbFileWidth);
- pSettings->ClipProperties.uiStillPicHeight =
- (M4OSA_UInt16)pEnv->GetIntField(object, fieldIds.rgbFileHeight);
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", \
- "getClipSettings-- rgbFileWidth %d ",
- pSettings->ClipProperties.uiStillPicWidth);
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", \
- "getClipSettings-- rgbFileHeight %d ",
- pSettings->ClipProperties.uiStillPicHeight);
-
- // Set the video rotation degree
- pSettings->ClipProperties.videoRotationDegrees =
- (M4OSA_UInt32)pEnv->GetIntField(object, fieldIds.rotationDegree);
- }
-
- // Check if settings could be set.
- if (*pResult)
- {
- // Return the settings.
- (*ppSettings) = pSettings;
- }
- else
- {
- // Free the settings.
- videoEditClasses_freeClipSettings(&pSettings);
- }
- }
-}
-
-void
-videoEditClasses_createClipSettings(
- bool* pResult,
- JNIEnv* pEnv,
- M4VSS3GPP_ClipSettings* pSettings,
- jobject* pObject)
-{
- VideoEditJava_ClipSettingsFieldIds fieldIds;
- jclass clazz = NULL;
- jobject object = NULL;
- memset(&fieldIds, 0, sizeof(VideoEditJava_ClipSettingsFieldIds));
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_createClipSettings()");
-
- // Retrieve the class.
- videoEditJava_getClipSettingsClass(pResult, pEnv, &clazz);
-
- // Retrieve the field ids.
- videoEditJava_getClipSettingsFieldIds(pResult, pEnv, &fieldIds);
- }
-
- // Only create an object if the class and fields could be located.
- if (*pResult)
- {
- // Allocate a new object.
- object = pEnv->AllocObject(clazz);
- if (NULL != object)
- {
- // Set the clipPath field.
- pEnv->SetObjectField(object, fieldIds.clipPath, NULL);
-
- // Set the fileType field.
- pEnv->SetIntField(object, fieldIds.fileType, videoEditJava_getClipTypeCToJava(
- pSettings->FileType));
-
- // Set the beginCutTime field.
- pEnv->SetIntField(object, fieldIds.beginCutTime, pSettings->uiBeginCutTime);
-
- // Set the endCutTime field.
- pEnv->SetIntField(object, fieldIds.endCutTime, pSettings->uiEndCutTime);
-
- // Set the beginCutPercent field.
- pEnv->SetIntField(object, fieldIds.beginCutPercent, pSettings->xVSS.uiBeginCutPercent);
-
- // Set the endCutPercent field.
- pEnv->SetIntField(object, fieldIds.endCutPercent, pSettings->xVSS.uiEndCutPercent);
-
- // Set the panZoomEnabled field.
- pEnv->SetBooleanField(object, fieldIds.panZoomEnabled, pSettings->xVSS.isPanZoom);
-
- // Set the panZoomPercentStart field.
- pEnv->SetIntField(object, fieldIds.panZoomPercentStart,
- (1000 - pSettings->xVSS.PanZoomXa));
-
- // Set the panZoomTopLeftXStart field.
- pEnv->SetIntField(object, fieldIds.panZoomTopLeftXStart,
- pSettings->xVSS.PanZoomTopleftXa);
-
- // Set the panZoomTopLeftYStart field.
- pEnv->SetIntField(object, fieldIds.panZoomTopLeftYStart,
- pSettings->xVSS.PanZoomTopleftYa);
-
- // Set the panZoomPercentEnd field.
- pEnv->SetIntField(object, fieldIds.panZoomPercentEnd,
- (1000 - pSettings->xVSS.PanZoomXb));
-
- // Set the panZoomTopLeftXEnd field.
- pEnv->SetIntField(object, fieldIds.panZoomTopLeftXEnd,
- pSettings->xVSS.PanZoomTopleftXb);
-
- // Set the panZoomTopLeftYEnd field.
- pEnv->SetIntField(object, fieldIds.panZoomTopLeftYEnd,
- pSettings->xVSS.PanZoomTopleftYb);
-
- // Set the mediaRendering field.
- pEnv->SetIntField(object, fieldIds.mediaRendering,
- videoEditJava_getMediaRenderingCToJava(pSettings->xVSS.MediaRendering));
-
- // Set the rgb file width and height
- pEnv->SetIntField(object, fieldIds.rgbFileWidth,
- pSettings->ClipProperties.uiStillPicWidth );
-
- pEnv->SetIntField(object, fieldIds.rgbFileHeight,
- pSettings->ClipProperties.uiStillPicHeight );
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "rgbFileWeight %d rgbFileHeight %d ",
- pSettings->ClipProperties.uiStillPicWidth ,
- pSettings->ClipProperties.uiStillPicHeight);
-
- // Set the video rotation
- pEnv->SetIntField(object, fieldIds.rotationDegree,
- pSettings->ClipProperties.videoRotationDegrees);
-
- // Return the object.
- (*pObject) = object;
- }
- }
-}
-void
-videoEditPropClass_createProperties(
- bool* pResult,
- JNIEnv* pEnv,
- VideoEditPropClass_Properties* pProperties,
- jobject* pObject)
-{
- VideoEditJava_PropertiesFieldIds fieldIds;
- jclass clazz = NULL;
- jobject object = NULL;
- memset(&fieldIds, 0, sizeof(VideoEditJava_PropertiesFieldIds));
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_PROP_CLASSES",
- "videoEditPropClass_createProperties()");
-
- // Retrieve the class.
- videoEditJava_getPropertiesClass(pResult, pEnv, &clazz);
-
- // Retrieve the field ids.
- videoEditJava_getPropertiesFieldIds(pResult, pEnv, &fieldIds);
- }
-
- // Only create an object if the class and fields could be located.
- if (*pResult)
- {
- // Allocate a new object.
- object = pEnv->AllocObject(clazz);
- if (NULL != object)
- {
- // Set the duration field.
- pEnv->SetIntField(object, fieldIds.duration, pProperties->uiClipDuration);
-
- // Set the fileType field.
- pEnv->SetIntField(object, fieldIds.fileType,
- videoEditJava_getFileTypeCToJava(pProperties->FileType));
-
- // Set the videoFormat field.
- pEnv->SetIntField(object, fieldIds.videoFormat,
- videoEditJava_getVideoFormatCToJava(pProperties->VideoStreamType));
-
- // Set the videoDuration field.
- pEnv->SetIntField(object, fieldIds.videoDuration, pProperties->uiClipVideoDuration);
-
- // Set the videoBitrate field.
- pEnv->SetIntField(object, fieldIds.videoBitrate, pProperties->uiVideoBitrate);
-
- // Set the width field.
- pEnv->SetIntField(object, fieldIds.width, pProperties->uiVideoWidth);
-
- // Set the height field.
- pEnv->SetIntField(object, fieldIds.height, pProperties->uiVideoHeight);
-
- // Set the averageFrameRate field.
- pEnv->SetFloatField(object, fieldIds.averageFrameRate, pProperties->fAverageFrameRate);
-
- // Set the profile field.
- pEnv->SetIntField(object, fieldIds.profile,
- pProperties->uiVideoProfile);
-
- // Set the level field.
- pEnv->SetIntField(object, fieldIds.level,
- pProperties->uiVideoLevel);
-
- // Set whether profile supported
- pEnv->SetBooleanField(object, fieldIds.profileSupported,
- pProperties->bProfileSupported);
-
- // Set whether level supported
- pEnv->SetBooleanField(object, fieldIds.levelSupported,
- pProperties->bLevelSupported);
-
- // Set the audioFormat field.
- pEnv->SetIntField(object, fieldIds.audioFormat,
- videoEditJava_getAudioFormatCToJava(pProperties->AudioStreamType));
-
- // Set the audioDuration field.
- pEnv->SetIntField(object, fieldIds.audioDuration, pProperties->uiClipAudioDuration);
-
- // Set the audioBitrate field.
- pEnv->SetIntField(object, fieldIds.audioBitrate, pProperties->uiAudioBitrate);
-
- // Set the audioChannels field.
- pEnv->SetIntField(object, fieldIds.audioChannels, pProperties->uiNbChannels);
-
- // Set the audioSamplingFrequency field.
- pEnv->SetIntField(object, fieldIds.audioSamplingFrequency,
- pProperties->uiSamplingFrequency);
-
- // Set the video rotation field.
- pEnv->SetIntField(object, fieldIds.videoRotation, pProperties->uiRotation);
-
- // Return the object.
- (*pObject) = object;
- }
- }
-}
-
-void
-videoEditClasses_freeClipSettings(
- M4VSS3GPP_ClipSettings** ppSettings)
-{
- // Check if memory was allocated for the ClipSettings.
- if (M4OSA_NULL != (*ppSettings))
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_freeClipSettings()");
-
- // Free the input file path.
- videoEditOsal_free((*ppSettings)->pFile);
- (*ppSettings)->pFile = M4OSA_NULL;
- (*ppSettings)->filePathSize = 0;
-
- // Free the clip settings.
- M4xVSS_FreeClipSettings((*ppSettings));
-
- // Free the settings structure.
- videoEditOsal_free((*ppSettings));
- (*ppSettings) = M4OSA_NULL;
- }
-}
-
-#ifdef VIDEOEDIT_LOGGING_ENABLED
-void
-videoEditClasses_logClipSettings(
- M4VSS3GPP_ClipSettings* pSettings,
- int indentation)
-{
- // Check if memory was allocated for the ClipSettings.
- if (M4OSA_NULL != pSettings)
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pFile: %s", indentation, ' ',
- (M4OSA_NULL != pSettings->pFile) ? (char*)pSettings->pFile : "<null>");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c FileType: %s", indentation, ' ',
- videoEditJava_getClipTypeString(pSettings->FileType));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c filePathSize: %u", indentation, ' ',
- (unsigned int)pSettings->filePathSize);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c ClipProperties:", indentation, ' ');
- videoEditClasses_logClipProperties(&pSettings->ClipProperties,
- indentation + VIDEOEDIT_LOG_INDENTATION);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiBeginCutTime: %u ms", indentation, ' ',
- (unsigned int)pSettings->uiBeginCutTime);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiEndCutTime: %u ms", indentation, ' ',
- (unsigned int)pSettings->uiEndCutTime);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiBeginCutPercent: %u %%", indentation, ' ',
- (unsigned int)pSettings->xVSS.uiBeginCutPercent);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiEndCutPercent: %u %%", indentation, ' ',
- (unsigned int)pSettings->xVSS.uiEndCutPercent);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiDuration: %u ms", indentation, ' ',
- (unsigned int)pSettings->xVSS.uiDuration);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c isPanZoom: %s", indentation, ' ',
- pSettings->xVSS.isPanZoom ? "true" : "false");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c PanZoomXa: %d ms", indentation, ' ',
- pSettings->xVSS.PanZoomXa);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c PanZoomTopleftXa: %d ms", indentation, ' ',
- pSettings->xVSS.PanZoomTopleftXa);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c PanZoomTopleftYa: %d ms", indentation, ' ',
- pSettings->xVSS.PanZoomTopleftYa);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c PanZoomXb: %d ms", indentation, ' ',
- pSettings->xVSS.PanZoomXb);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c PanZoomTopleftXb: %d ms", indentation, ' ',
- pSettings->xVSS.PanZoomTopleftXb);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c PanZoomTopleftYb: %d ms", indentation, ' ',
- pSettings->xVSS.PanZoomTopleftYb);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c MediaRendering: %s", indentation, ' ',
- videoEditJava_getMediaRenderingString(pSettings->xVSS.MediaRendering));
- }
- else
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c <null>", indentation, ' ');
- }
-}
-#endif
-
-
-void
-videoEditClasses_getEditSettings(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- M4VSS3GPP_EditSettings** ppSettings,
- bool flag)
-{
- VideoEditJava_EditSettingsFieldIds fieldIds;
- jobjectArray clipSettingsArray = NULL;
- jsize clipSettingsArraySize = 0;
- jobject clipSettings = NULL;
- jobjectArray transitionSettingsArray = NULL;
- jsize transitionSettingsArraySize = 0;
- jobject transitionSettings = NULL;
- jobjectArray effectSettingsArray = NULL;
- jsize effectSettingsArraySize = 0;
- jobject effectSettings = NULL;
- jobject backgroundMusicSettings = NULL;
- int audioChannels = 0;
- M4VSS3GPP_EditSettings* pSettings = M4OSA_NULL;
- bool converted = true;
- memset(&fieldIds, 0, sizeof(VideoEditJava_EditSettingsFieldIds));
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_getEditSettings()");
-
- // Retrieve the field ids.
- videoEditJava_getEditSettingsFieldIds(pResult, pEnv, &fieldIds);
- }
-
- // Only retrieve the EditSettings if the previous action succeeded.
- if (*pResult)
- {
- // Check if the object is valid.
- if (NULL != object)
- {
- // Retrieve the clipSettingsArray.
- videoEditJava_getArray(pResult, pEnv, object,
- fieldIds.clipSettingsArray,
- &clipSettingsArray,
- &clipSettingsArraySize);
-
- // Retrieve the transitionSettingsArray.
- videoEditJava_getArray(pResult, pEnv, object,
- fieldIds.transitionSettingsArray,
- &transitionSettingsArray,
- &transitionSettingsArraySize);
-
- // Retrieve the effectSettingsArray.
- videoEditJava_getArray(pResult, pEnv, object,
- fieldIds.effectSettingsArray,
- &effectSettingsArray,
- &effectSettingsArraySize);
-
- // Retrieve the backgroundMusicSettings.
- videoEditJava_getObject(pResult, pEnv, object, fieldIds.backgroundMusicSettings,
- &backgroundMusicSettings);
-
- // Check if the arrays and background music settings object could be retrieved.
- if (*pResult)
- {
- // Retrieve the number of channels.
- audioChannels = pEnv->GetIntField(object, fieldIds.audioChannels);
- }
- }
- }
-
- // Only validate the EditSettings if the fields could be located.
- if (*pResult)
- {
- // Check if there is at least one clip.
- //videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- // (clipSettingsArraySize < 1),
- // "there should be at least one clip");
- if(clipSettingsArraySize < 1) {
- return;
- }
- if(flag)
- {
- // Check if there are clips.
- if ((clipSettingsArraySize != 0) || (transitionSettingsArraySize != 0))
- {
- // The number of transitions must be equal to the number of clips - 1.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- (clipSettingsArraySize != (transitionSettingsArraySize + 1)),
- "the number of transitions should be equal to the number of clips - 1");
- }
- }
- }
-
- // Only retrieve the EditSettings if the fields could be located.
- if (*pResult)
- {
- // Check if the object is valid.
- if (NULL != object)
- {
- // Allocate memory for the EditSettings.
- pSettings = (M4VSS3GPP_EditSettings*)videoEditOsal_alloc(pResult, pEnv,
- sizeof(M4VSS3GPP_EditSettings), "EditSettings");
-
- // Check if memory could be allocated for the EditSettings.
- if (*pResult)
- {
- // Set the number of clips that will be edited.
- pSettings->uiClipNumber = clipSettingsArraySize;
-
- // Check if the clip settings array contains items.
- if (clipSettingsArraySize > 0)
- {
- // Allocate memory for the clip settings array.
- pSettings->pClipList = (M4VSS3GPP_ClipSettings **)videoEditOsal_alloc(pResult,
- pEnv,
- clipSettingsArraySize * sizeof(M4VSS3GPP_ClipSettings *),
- "ClipSettingsArray");
- if (*pResult)
- {
- // Loop over all clip settings objects.
- for (int i = 0; ((*pResult) && (i < clipSettingsArraySize)); i++)
- {
- // Get the clip settings object.
- clipSettings = pEnv->GetObjectArrayElement(clipSettingsArray, i);
-
- // Get the clip settings.
- videoEditClasses_getClipSettings(pResult, pEnv, clipSettings,
- &pSettings->pClipList[i]);
-
- // Free the local references to avoid memory leaks
- pEnv->DeleteLocalRef(clipSettings);
- }
- }
- }
-
- // Check if the transition settings array contains items.
- if (transitionSettingsArraySize > 0)
- {
- // Allocate memory for the transition settings array.
- pSettings->pTransitionList =
- (M4VSS3GPP_TransitionSettings **)videoEditOsal_alloc(pResult,
- pEnv, transitionSettingsArraySize * sizeof(M4VSS3GPP_TransitionSettings *),
- "TransitionSettingsArray");
- if (*pResult)
- {
- // Loop over all transition settings objects.
- for (int i = 0; ((*pResult) && (i < transitionSettingsArraySize)); i++)
- {
- // Get the transition settings object.
- transitionSettings =
- pEnv->GetObjectArrayElement(transitionSettingsArray, i);
-
- // Get the transition settings.
- videoEditClasses_getTransitionSettings(pResult, pEnv,
- transitionSettings, &pSettings->pTransitionList[i]);
-
- // Free the local references to avoid memory leaks
- pEnv->DeleteLocalRef(transitionSettings);
- }
- }
- }
-
- // Check if the effect settings array contains items.
- if (effectSettingsArraySize > 0)
- {
- // Allocate memory for the effect settings array.
- pSettings->Effects = (M4VSS3GPP_EffectSettings*)videoEditOsal_alloc(pResult,
- pEnv,
- effectSettingsArraySize * sizeof(M4VSS3GPP_EffectSettings),
- "EffectSettingsArray");
- if (*pResult)
- {
- // Loop over all effect settings objects.
- for (int i = 0; ((*pResult) && (i < effectSettingsArraySize)); i++)
- {
- // Get the effect settings object.
- effectSettings = pEnv->GetObjectArrayElement(effectSettingsArray, i);
-
- // Get the effect settings.
- videoEditClasses_getEffectSettings(pResult, pEnv, effectSettings,
- &pSettings->Effects[i]);
-
- // Free the local references to avoid memory leaks
- pEnv->DeleteLocalRef(effectSettings);
- }
- }
- }
-
- // Check if the clips, transitions and effects could be set.
- if (*pResult)
- {
- // Set the number of effects in the clip.
- pSettings->nbEffects = (M4OSA_UInt8)effectSettingsArraySize;
-
- // Set the frame rate of the output video.
- pSettings->videoFrameRate =
- (M4VIDEOEDITING_VideoFramerate)videoEditJava_getVideoFrameRateJavaToC(
- &converted, pEnv->GetIntField(object, fieldIds.videoFrameRate));
-
- // Check if the frame rate is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- !converted, "editSettings.videoFrameRate is invalid");
- }
-
- // Check if the frame rate could be set.
- if (*pResult)
- {
- // Set the path of the output file.
- pSettings->pOutputFile = (M4OSA_Char*)videoEditJava_getString(pResult, pEnv,
- object, fieldIds.outputFile, &pSettings->uiOutputPathSize);
- }
-
- // Check if path of the output file could be set.
- if (*pResult)
- {
- // Set the path of the temporary file produced when using
- // the constant memory 3gp writer.
- pSettings->pTemporaryFile = M4OSA_NULL;
-
- // Set the output video size.
- pSettings->xVSS.outputVideoSize =
- (M4VIDEOEDITING_VideoFrameSize)videoEditJava_getVideoFrameSizeJavaToC(
- &converted, pEnv->GetIntField(object, fieldIds.videoFrameSize));
-
- // Check if the output video size is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- !converted, "editSettings.videoFrameSize is invalid");
- }
-
- // Check if the output video size could be set.
- if (*pResult)
- {
- // Set the output video format.
- pSettings->xVSS.outputVideoFormat =
- (M4VIDEOEDITING_VideoFormat)videoEditJava_getVideoFormatJavaToC(
- &converted, pEnv->GetIntField(object, fieldIds.videoFormat));
-
- // Check if the output video format is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- !converted, "editSettings.videoFormat is invalid");
- }
-
- // Check if the output video format could be set.
- if (*pResult)
- {
- // Set the output audio format.
- pSettings->xVSS.outputAudioFormat =
- (M4VIDEOEDITING_AudioFormat)videoEditJava_getAudioFormatJavaToC(
- &converted, pEnv->GetIntField(object, fieldIds.audioFormat));
-
- // Check if the output audio format is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- !converted, "editSettings.audioFormat is invalid");
- }
-
- // Check if the output audio format could be set.
- if (*pResult)
- {
- // Set the output audio sampling frequency when not replacing the audio,
- // or replacing it with MP3 audio.
- pSettings->xVSS.outputAudioSamplFreq =
- (M4VIDEOEDITING_AudioSamplingFrequency)\
- videoEditJava_getAudioSamplingFrequencyJavaToC(
- &converted, pEnv->GetIntField(object, fieldIds.audioSamplingFreq));
-
- // Check if the output audio sampling frequency is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- !converted, "editSettings.audioSamplingFreq is invalid");
- }
-
- // Check if the output audio sampling frequency could be set.
- if (*pResult)
- {
- // Check if the number of audio channels is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- ((0 != audioChannels ) ||
- ((M4VIDEOEDITING_kNoneAudio != pSettings->xVSS.outputAudioFormat) &&
- (M4VIDEOEDITING_kNullAudio != pSettings->xVSS.outputAudioFormat) ) ) &&
- (1 != audioChannels ) &&
- (2 != audioChannels ),
- "editSettings.audioChannels must be set to 0, 1 or 2");
- }
-
- // Check if the number of audio channels is valid.
- if (*pResult)
- {
- // Set the maximum output file size (MMS usecase).
- pSettings->xVSS.outputFileSize = (M4OSA_UInt32)pEnv->GetIntField(object,
- fieldIds.maxFileSize);
-
- // Whether or not the audio is mono, only valid for AAC.
- pSettings->xVSS.bAudioMono = (M4OSA_Bool)(1 == audioChannels);
-
- // Set the output video bitrate.
- pSettings->xVSS.outputVideoBitrate = (M4OSA_UInt32)pEnv->GetIntField(object,
- fieldIds.videoBitrate);
-
- // Set the output video profile.
- pSettings->xVSS.outputVideoProfile = (M4OSA_UInt32)pEnv->GetIntField(object,
- fieldIds.videoProfile);
-
- // Set the output video level.
- pSettings->xVSS.outputVideoLevel = (M4OSA_UInt32)pEnv->GetIntField(object,
- fieldIds.videoLevel);
-
- // Set the output audio bitrate.
- pSettings->xVSS.outputAudioBitrate = (M4OSA_UInt32)pEnv->GetIntField(object,
- fieldIds.audioBitrate);
-
- // Set the background music settings.
- videoEditClasses_getBackgroundMusicSettings(pResult, pEnv,
- backgroundMusicSettings, &pSettings->xVSS.pBGMtrack);
-
- // Set the text rendering function (will be set elsewhere).
- pSettings->xVSS.pTextRenderingFct = M4OSA_NULL;
- pSettings->PTVolLevel =
- (M4OSA_Float)pEnv->GetIntField(object, fieldIds.primaryTrackVolume);
- }
- }
-
- // Check if settings could be set.
- if (*pResult)
- {
- // Return the settings.
- (*ppSettings) = pSettings;
- }
- else
- {
- // Free the settings.
- videoEditClasses_freeEditSettings(&pSettings);
- }
- }
- }
-}
-
-void
-videoEditClasses_freeEditSettings(
- M4VSS3GPP_EditSettings** ppSettings)
-{
- // Check if memory was allocated for the EditSettings.
- if (M4OSA_NULL != (*ppSettings))
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_freeEditSettings()");
-
- // Free the background music settings.
- videoEditClasses_freeBackgroundMusicSettings(&(*ppSettings)->xVSS.pBGMtrack);
-
- // Free the path of the output file.
- videoEditOsal_free((*ppSettings)->pOutputFile);
- (*ppSettings)->pOutputFile = M4OSA_NULL;
- (*ppSettings)->uiOutputPathSize = 0;
-
- // Check if the EffectSettings should be freed.
- if (M4OSA_NULL != (*ppSettings)->Effects)
- {
- // Loop over all effect settings.
- for (int i = 0; i < (*ppSettings)->nbEffects; i++)
- {
- // Free the effect settings.
- videoEditClasses_freeEffectSettings(&(*ppSettings)->Effects[i]);
- }
-
- // Free the memory for the effect settings array.
- videoEditOsal_free((*ppSettings)->Effects);
- (*ppSettings)->Effects = M4OSA_NULL;
- }
-
- // Reset the number of effects in the clip.
- (*ppSettings)->nbEffects = 0;
-
- // Check if there are clips.
- if (0 < (*ppSettings)->uiClipNumber)
- {
- // Check if the TransitionSettings should be freed.
- if (M4OSA_NULL != (*ppSettings)->pTransitionList)
- {
- // Loop over all transition settings.
- for (int i = 0; i < ((*ppSettings)->uiClipNumber - 1); i++)
- {
- // Free the transition settings.
- videoEditClasses_freeTransitionSettings(&(*ppSettings)->pTransitionList[i]);
- }
-
- // Free the memory for the transition settings array.
- videoEditOsal_free((*ppSettings)->pTransitionList);
- (*ppSettings)->pTransitionList = M4OSA_NULL;
- }
-
- // Check if the ClipSettings should be freed.
- if (M4OSA_NULL != (*ppSettings)->pClipList)
- {
- // Loop over all clip settings.
- for (int i = 0; i < (*ppSettings)->uiClipNumber; i++)
- {
- // Free the clip settings.
- videoEditClasses_freeClipSettings(&(*ppSettings)->pClipList[i]);
- }
-
- // Free the memory for the clip settings array.
- videoEditOsal_free((*ppSettings)->pClipList);
- (*ppSettings)->pClipList = M4OSA_NULL;
- }
- }
-
- // Reset the number of clips.
- (*ppSettings)->uiClipNumber = 0;
-
- // Free the settings structure.
- videoEditOsal_free((*ppSettings));
- (*ppSettings) = M4OSA_NULL;
- }
-}
-
-#ifdef VIDEOEDIT_LOGGING_ENABLED
-void
-videoEditClasses_logEditSettings(
- M4VSS3GPP_EditSettings* pSettings,
- int indentation)
-{
- // Check if memory was allocated for the EditSettings.
- if (M4OSA_NULL != pSettings)
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiClipNumber: %d", indentation, ' ',
- pSettings->uiClipNumber);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiMasterClip: %d", indentation, ' ',
- pSettings->uiMasterClip);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pClipList: %s", indentation, ' ',
- (M4OSA_NULL != pSettings->pClipList) ? " " : "<null>");
- if (M4OSA_NULL != pSettings->pClipList)
- {
- indentation += VIDEOEDIT_LOG_INDENTATION;
- for (int i = 0; i < pSettings->uiClipNumber; i++)
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pClipList[%d]:", indentation, ' ',
- i);
- videoEditClasses_logClipSettings(pSettings->pClipList[i],
- indentation + VIDEOEDIT_LOG_INDENTATION);
- }
- indentation -= VIDEOEDIT_LOG_INDENTATION;
- }
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pTransitionList: %s", indentation, ' ',
- (M4OSA_NULL != pSettings->pTransitionList) ? " " : "<null>");
- if (M4OSA_NULL != pSettings->pTransitionList)
- {
- indentation += VIDEOEDIT_LOG_INDENTATION;
- for (int i = 0; i < (pSettings->uiClipNumber - 1); i++)
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pTransitionList[%d]:", indentation, ' ', i);
- videoEditClasses_logTransitionSettings(pSettings->pTransitionList[i],
- indentation + VIDEOEDIT_LOG_INDENTATION);
- }
- indentation -= VIDEOEDIT_LOG_INDENTATION;
- }
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c Effects: %s", indentation, ' ',
- (M4OSA_NULL != pSettings->Effects) ? " " : "<null>");
- if (M4OSA_NULL != pSettings->Effects)
- {
- indentation += VIDEOEDIT_LOG_INDENTATION;
- for (int i = 0; i < pSettings->nbEffects; i++)
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c Effects[%d]:", indentation, ' ', i);
- videoEditClasses_logEffectSettings(&pSettings->Effects[i],
- indentation + VIDEOEDIT_LOG_INDENTATION);
- }
- indentation -= VIDEOEDIT_LOG_INDENTATION;
- }
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c nbEffects: %d", indentation, ' ',
- pSettings->nbEffects);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c videoFrameRate: %s", indentation, ' ',
- videoEditJava_getVideoFrameRateString(pSettings->videoFrameRate));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pOutputFile: %s", indentation, ' ',
- (M4OSA_NULL != pSettings->pOutputFile) ? (char*)pSettings->pOutputFile : "<null>");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiOutputPathSize: %u", indentation, ' ',
- (unsigned int)pSettings->uiOutputPathSize);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pTemporaryFile: %s", indentation, ' ',
- (M4OSA_NULL != pSettings->pTemporaryFile) ?\
- (char*)pSettings->pTemporaryFile : "<null>");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c outputVideoSize: %s", indentation, ' ',
- videoEditJava_getVideoFrameSizeString(pSettings->xVSS.outputVideoSize));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c outputVideoFormat: %s", indentation, ' ',
- videoEditJava_getVideoFormatString(pSettings->xVSS.outputVideoFormat));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c outputVideoProfile: %u", indentation, ' ',
- videoEditJava_getVideoFormatString(pSettings->xVSS.outputVideoProfile));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c outputVideoLevel: %u", indentation, ' ',
- videoEditJava_getVideoFormatString(pSettings->xVSS.outputVideoLevel));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c outputAudioFormat: %s", indentation, ' ',
- videoEditJava_getAudioFormatString(pSettings->xVSS.outputAudioFormat));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c outputAudioSamplFreq: %s", indentation, ' ',
- videoEditJava_getAudioSamplingFrequencyString(pSettings->xVSS.outputAudioSamplFreq));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c outputFileSize: %u", indentation, ' ',
- (unsigned int)pSettings->xVSS.outputFileSize);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c bAudioMono: %s", indentation, ' ',
- pSettings->xVSS.bAudioMono ? "true" : "false");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c outputVideoBitrate: %s", indentation, ' ',
- videoEditJava_getBitrateString(pSettings->xVSS.outputVideoBitrate));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c outputAudioBitrate: %s", indentation, ' ',
- videoEditJava_getBitrateString(pSettings->xVSS.outputAudioBitrate));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pBGMtrack:", indentation, ' ');
- videoEditClasses_logBackgroundMusicSettings(pSettings->xVSS.pBGMtrack,
- indentation + VIDEOEDIT_LOG_INDENTATION);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pTextRenderingFct: %s", indentation, ' ',
- (M4OSA_NULL != pSettings->xVSS.pTextRenderingFct) ? "set" : "<null>");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c PTVolLevel: %u", indentation, ' ',
- (unsigned int)pSettings->PTVolLevel);
- }
- else
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c <null>", indentation, ' ');
- }
-}
-#endif
-
-
-void
-videoEditClasses_getEffectSettings(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- M4VSS3GPP_EffectSettings* pSettings)
-{
-
- VideoEditJava_EffectSettingsFieldIds fieldIds;
- bool converted = true;
- memset(&fieldIds, 0, sizeof(VideoEditJava_EffectSettingsFieldIds));
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_getEffectSettings()");
-
- // Retrieve the field ids.
- videoEditJava_getEffectSettingsFieldIds(pResult, pEnv, &fieldIds);
- }
-
- // Only validate the EffectSettings if the fields could be located.
- if (*pResult)
- {
- // Check if the effect is set.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- (NULL == object),
- "effect is null");
- }
-
- // Only retrieve the EffectSettings if the fields could be located and validated.
- if (*pResult)
- {
- // Set the start time in milliseconds.
- pSettings->uiStartTime = (M4OSA_UInt32)pEnv->GetIntField(object, fieldIds.startTime);
-
- // Set the duration in milliseconds.
- pSettings->uiDuration = (M4OSA_UInt32)pEnv->GetIntField(object, fieldIds.duration);
-
- // Set the video effect type, None, FadeIn, FadeOut, etc.
- pSettings->VideoEffectType =
- (M4VSS3GPP_VideoEffectType)videoEditJava_getVideoEffectJavaToC(
- &converted, pEnv->GetIntField(object, fieldIds.videoEffectType));
-
- // Check if the video effect type is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- !converted, "effect.videoEffectType is invalid");
- }
-
- // Check if the video effect type could be set.
- if (*pResult)
- {
- // Set the external effect function.
- pSettings->ExtVideoEffectFct = M4OSA_NULL;
-
- // Set the context given to the external effect function.
- pSettings->pExtVideoEffectFctCtxt = M4OSA_NULL;
-
- // Set the audio effect type, None, FadeIn, FadeOut.
- pSettings->AudioEffectType =
- (M4VSS3GPP_AudioEffectType)videoEditJava_getAudioEffectJavaToC(
- &converted, pEnv->GetIntField(object, fieldIds.audioEffectType));
-
- // Check if the audio effect type is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- !converted, "effect.audioEffectType is invalid");
- }
-
- // Check if the audio effect type could be set.
- if (*pResult)
- {
- // Set the start in percentage of the cut clip duration.
- pSettings->xVSS.uiStartPercent = (M4OSA_UInt32)pEnv->GetIntField(object,
- fieldIds.startPercent);
-
- // Set the duration in percentage of the ((clip duration) - (effect starttime)).
- pSettings->xVSS.uiDurationPercent = (M4OSA_UInt32)pEnv->GetIntField(object,
- fieldIds.durationPercent);
-
- // Set the framing file path (GIF/PNG file).
- pSettings->xVSS.pFramingFilePath = (M4OSA_Char*)videoEditJava_getString(pResult, pEnv,
- object, fieldIds.framingFile, M4OSA_NULL);
-
- // Check if this is a framing effect.
- if (M4xVSS_kVideoEffectType_Framing == (M4xVSS_VideoEffectType)pSettings->VideoEffectType)
- {
- // Check if the framing file path is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- (M4OSA_NULL == pSettings->xVSS.pFramingFilePath), "effect.framingFile is null");
- }
- }
-
- // Check if the framing file path could be retrieved.
- if (*pResult)
- {
- // Set the Framing RGB565 buffer.
- pSettings->xVSS.pFramingBuffer = M4OSA_NULL;
-
- // Set the top-left X coordinate in the output picture
- // where the added frame will be displayed.
- pSettings->xVSS.topleft_x = (M4OSA_UInt32)pEnv->GetIntField(object, fieldIds.topLeftX);
-
- // Set the top-left Y coordinate in the output picture
- // where the added frame will be displayed.
- pSettings->xVSS.topleft_y = (M4OSA_UInt32)pEnv->GetIntField(object, fieldIds.topLeftY);
-
- // Set whether or not the framing image is resized to output video size.
- pSettings->xVSS.bResize =
- (M4OSA_Bool)pEnv->GetBooleanField(object, fieldIds.framingResize);
-
- // Set the new size to which framing buffer needs to be resized to
- pSettings->xVSS.framingScaledSize =
- (M4VIDEOEDITING_VideoFrameSize)pEnv->GetIntField(object, fieldIds.framingScaledSize);
-
- // Set the text buffer.
- pSettings->xVSS.pTextBuffer = (M4OSA_Char*)videoEditJava_getString(pResult, pEnv, object,
- fieldIds.text, &pSettings->xVSS.textBufferSize);
- }
-
- // Check if the text buffer could be retrieved.
- if (*pResult)
- {
- // Set the data used by the font engine (size, color...).
- pSettings->xVSS.pRenderingData = (M4OSA_Char*)videoEditJava_getString(pResult, pEnv,
- object, fieldIds.textRenderingData, M4OSA_NULL);
- }
-
- // Check if the text rendering data could be retrieved.
- if (*pResult)
- {
- // Set the text plane width.
- pSettings->xVSS.uiTextBufferWidth = (M4OSA_UInt32)pEnv->GetIntField(object,
- fieldIds.textBufferWidth);
-
- // Set the text plane height.
- pSettings->xVSS.uiTextBufferHeight = (M4OSA_UInt32)pEnv->GetIntField(object,
- fieldIds.textBufferHeight);
-
- // Set the processing rate of the effect added when using the Fifties effect.
- pSettings->xVSS.uiFiftiesOutFrameRate = (M4OSA_UInt32)pEnv->GetIntField(object,
- fieldIds.fiftiesFrameRate);
-
- // Set the RGB16 input color of the effect added when using the rgb16 color effect.
- pSettings->xVSS.uiRgb16InputColor = (M4OSA_UInt16)pEnv->GetIntField(object,
- fieldIds.rgb16InputColor);
-
- // Set the start percentage of Alpha blending.
- pSettings->xVSS.uialphaBlendingStart = (M4OSA_UInt8)pEnv->GetIntField(object,
- fieldIds.alphaBlendingStartPercent);
-
- // Set the middle percentage of Alpha blending.
- pSettings->xVSS.uialphaBlendingMiddle = (M4OSA_UInt8)pEnv->GetIntField(object,
- fieldIds.alphaBlendingMiddlePercent);
-
- // Set the end percentage of Alpha blending.
- pSettings->xVSS.uialphaBlendingEnd = (M4OSA_UInt8)pEnv->GetIntField(object,
- fieldIds.alphaBlendingEndPercent);
-
- // Set the duration, in percentage of effect duration, of the FadeIn phase.
- pSettings->xVSS.uialphaBlendingFadeInTime = (M4OSA_UInt8)pEnv->GetIntField(object,
- fieldIds.alphaBlendingFadeInTimePercent);
-
- // Set the duration, in percentage of effect duration, of the FadeOut phase.
- pSettings->xVSS.uialphaBlendingFadeOutTime = (M4OSA_UInt8)pEnv->GetIntField(object,
- fieldIds.alphaBlendingFadeOutTimePercent);
-
- if (pSettings->xVSS.pFramingFilePath != M4OSA_NULL)
- {
- pSettings->xVSS.pFramingBuffer =
- (M4VIFI_ImagePlane *)M4OSA_32bitAlignedMalloc(sizeof(M4VIFI_ImagePlane),
- 0x00,(M4OSA_Char *)"framing buffer");
- }
-
- if (pSettings->xVSS.pFramingBuffer != M4OSA_NULL)
- {
- // OverFrame height and width
- pSettings->xVSS.pFramingBuffer->u_width = pEnv->GetIntField(object,
- fieldIds.width);
-
- pSettings->xVSS.pFramingBuffer->u_height = pEnv->GetIntField(object,
- fieldIds.height);
-
- pSettings->xVSS.width = pSettings->xVSS.pFramingBuffer->u_width;
- pSettings->xVSS.height = pSettings->xVSS.pFramingBuffer->u_height;
- pSettings->xVSS.rgbType = M4VSS3GPP_kRGB565;
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "pFramingBuffer u_width %d ", pSettings->xVSS.pFramingBuffer->u_width);
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "pFramingBuffer u_height %d", pSettings->xVSS.pFramingBuffer->u_height);
-
- }
-
- // Check if settings could be set.
- if (!(*pResult))
- {
- // Free the settings.
- videoEditClasses_freeEffectSettings(pSettings);
- }
- }
-}
-
-void
-videoEditClasses_freeEffectSettings(
- M4VSS3GPP_EffectSettings* pSettings)
-{
- // Check if memory was allocated for the EffectSettings.
- if (M4OSA_NULL != pSettings)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_freeEffectSettings()");
-
- // Free the data used by the font engine (size, color...).
- videoEditOsal_free(pSettings->xVSS.pRenderingData);
- pSettings->xVSS.pRenderingData = M4OSA_NULL;
-
- // Free the text buffer.
- videoEditOsal_free(pSettings->xVSS.pTextBuffer);
- pSettings->xVSS.pTextBuffer = M4OSA_NULL;
- pSettings->xVSS.textBufferSize = 0;
-
- // Free the framing file path.
- videoEditOsal_free(pSettings->xVSS.pFramingFilePath);
- pSettings->xVSS.pFramingFilePath = M4OSA_NULL;
- }
-}
-
-#ifdef VIDEOEDIT_LOGGING_ENABLED
-void
-videoEditClasses_logEffectSettings(
- M4VSS3GPP_EffectSettings* pSettings,
- int indentation)
-{
- // Check if memory was allocated for the EffectSettings.
- if (M4OSA_NULL != pSettings)
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiStartTime: %u ms", indentation, ' ',
- (unsigned int)pSettings->uiStartTime);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiDuration: %u ms", indentation, ' ',
- (unsigned int)pSettings->uiDuration);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c VideoEffectType: %s", indentation, ' ',
- videoEditJava_getVideoEffectString(pSettings->VideoEffectType));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c ExtVideoEffectFct: %s", indentation, ' ',
- (M4OSA_NULL != pSettings->ExtVideoEffectFct) ? "set" : "<null>");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pExtVideoEffectFctCtxt: %s", indentation, ' ',
- (M4OSA_NULL != pSettings->pExtVideoEffectFctCtxt) ? "set" : "<null>");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c AudioEffectType: %s", indentation, ' ',
- videoEditJava_getAudioEffectString(pSettings->AudioEffectType));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiStartPercent: %u %%", indentation, ' ',
- (unsigned int)pSettings->xVSS.uiStartPercent);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiDurationPercent: %u %%", indentation, ' ',
- (unsigned int)pSettings->xVSS.uiDurationPercent);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pFramingFilePath: %s", indentation, ' ',
- (M4OSA_NULL != pSettings->xVSS.pFramingFilePath) ?\
- (char*)pSettings->xVSS.pFramingFilePath : "<null>");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pFramingBuffer: %s", indentation, ' ',
- (M4OSA_NULL != pSettings->xVSS.pFramingBuffer) ? "set" : "<null>");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c topleft_x: %u", indentation, ' ',
- (unsigned int)pSettings->xVSS.topleft_x);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c topleft_y: %u", indentation, ' ',
- (unsigned int)pSettings->xVSS.topleft_y);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c bResize: %s", indentation, ' ',
- pSettings->xVSS.bResize ? "true" : "false");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pTextBuffer: %s", indentation, ' ',
- (M4OSA_NULL != pSettings->xVSS.pTextBuffer) ?\
- (char*)pSettings->xVSS.pTextBuffer : "<null>");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c textBufferSize: %u", indentation, ' ',
- (unsigned int)pSettings->xVSS.textBufferSize);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pRenderingData: %s", indentation, ' ',
- (M4OSA_NULL != pSettings->xVSS.pRenderingData) ?\
- (char*)pSettings->xVSS.pRenderingData : "<null>");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiTextBufferWidth: %u", indentation, ' ',
- (unsigned int)pSettings->xVSS.uiTextBufferWidth);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiTextBufferHeight: %u", indentation, ' ',
- (unsigned int)pSettings->xVSS.uiTextBufferHeight);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiFiftiesOutFrameRate: %u", indentation, ' ',
- (unsigned int)pSettings->xVSS.uiFiftiesOutFrameRate);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiRgb16InputColor: %d", indentation, ' ',
- pSettings->xVSS.uiRgb16InputColor);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uialphaBlendingStart: %d %%", indentation, ' ',
- pSettings->xVSS.uialphaBlendingStart);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uialphaBlendingMiddle: %d %%", indentation, ' ',
- pSettings->xVSS.uialphaBlendingMiddle);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uialphaBlendingEnd: %d %%", indentation, ' ',
- pSettings->xVSS.uialphaBlendingEnd);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uialphaBlendingFadeInTime: %d %%", indentation, ' ',
- pSettings->xVSS.uialphaBlendingFadeInTime);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uialphaBlendingFadeOutTime: %d %%", indentation, ' ',
- pSettings->xVSS.uialphaBlendingFadeOutTime);
- }
- else
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c <null>", indentation, ' ');
- }
-}
-#endif
-
-
-void
-videoEditClasses_getSlideTransitionSettings(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- M4xVSS_SlideTransitionSettings** ppSettings)
-{
- VideoEditJava_SlideTransitionSettingsFieldIds fieldIds = {NULL};
- M4xVSS_SlideTransitionSettings* pSettings = M4OSA_NULL;
- bool converted = true;
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_getSlideTransitionSettings()");
-
- // Retrieve the field ids.
- videoEditJava_getSlideTransitionSettingsFieldIds(pResult, pEnv, &fieldIds);
- }
-
-
- // Only validate the SlideTransitionSettings if the fields could be located.
- if (*pResult)
- {
- // Check if the clip is set.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- (NULL == object),
- "slideSettings is null");
- }
-
- // Only retrieve the SlideTransitionSettings if the fields could be located and validated.
- if (*pResult)
- {
- // Allocate memory for the SlideTransitionSettings.
- pSettings = (M4xVSS_SlideTransitionSettings*)videoEditOsal_alloc(pResult, pEnv,
- sizeof(M4xVSS_SlideTransitionSettings), "SlideTransitionSettings");
-
- // Check if memory could be allocated for the SlideTransitionSettings.
- if (*pResult)
- {
- // Set the direction of the slide.
- pSettings->direction =
- (M4xVSS_SlideTransition_Direction)videoEditJava_getSlideDirectionJavaToC(
- &converted, pEnv->GetIntField(object, fieldIds.direction));
-
- // Check if the direction is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- !converted, "slideSettings.direction is invalid");
- }
-
- // Check if settings could be set.
- if (*pResult)
- {
- // Return the settings.
- (*ppSettings) = pSettings;
- }
- else
- {
- // Free the settings.
- videoEditClasses_freeSlideTransitionSettings(&pSettings);
- }
- }
-}
-
-void
-videoEditClasses_freeSlideTransitionSettings(
- M4xVSS_SlideTransitionSettings** ppSettings)
-{
- // Check if memory was allocated for the SlideTransitionSettings.
- if (M4OSA_NULL != (*ppSettings))
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_freeSlideTransitionSettings()");
-
- // Free the settings structure.
- videoEditOsal_free((*ppSettings));
- (*ppSettings) = M4OSA_NULL;
- }
-}
-
-#ifdef VIDEOEDIT_LOGGING_ENABLED
-void
-videoEditClasses_logSlideTransitionSettings(
- M4xVSS_SlideTransitionSettings* pSettings,
- int indentation)
-{
- // Check if memory was allocated for the SlideTransitionSettings.
- if (M4OSA_NULL != pSettings)
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c direction: %s", indentation, ' ',
- videoEditJava_getSlideDirectionString(pSettings->direction));
- }
- else
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c <null>", indentation, ' ');
- }
-}
-#endif
-
-
-void
-videoEditClasses_getTransitionSettings(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- M4VSS3GPP_TransitionSettings** ppSettings)
-{
-
- VideoEditJava_TransitionSettingsFieldIds fieldIds;
- jobject alphaSettings = NULL;
- jobject slideSettings = NULL;
- M4VSS3GPP_TransitionSettings* pSettings = M4OSA_NULL;
- bool converted = true;
- memset(&fieldIds, 0, sizeof(VideoEditJava_TransitionSettingsFieldIds));
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_getTransitionSettings()");
-
- // Retrieve the field ids.
- videoEditJava_getTransitionSettingsFieldIds(pResult, pEnv, &fieldIds);
- }
-
- // Only validate the TransitionSettings if the fields could be located.
- if (*pResult)
- {
- // Check if the transition is set.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- (NULL == object),
- "transition is null");
- }
-
- // Check if the field ids could be located and validated.
- if (*pResult)
- {
- // Retrieve the alphaSettings.
- videoEditJava_getObject(pResult, pEnv, object, fieldIds.alphaSettings, &alphaSettings);
-
- // Retrieve the slideSettings.
- videoEditJava_getObject(pResult, pEnv, object, fieldIds.slideSettings, &slideSettings);
- }
-
- // Only retrieve the TransitionSettings if the fields could be located.
- if (*pResult)
- {
- // Allocate memory for the TransitionSettings.
- pSettings = (M4VSS3GPP_TransitionSettings*)videoEditOsal_alloc(pResult,
- pEnv, sizeof(M4VSS3GPP_TransitionSettings), "TransitionSettings");
-
- // Check if memory could be allocated for the TransitionSettings.
- if (*pResult)
- {
- // Set the duration of the transition, in milliseconds (set to 0 to get no transition).
- pSettings->uiTransitionDuration = (M4OSA_UInt32)pEnv->GetIntField(object,
- fieldIds.duration);
-
- // Set the type of the video transition.
- pSettings->VideoTransitionType =
- (M4VSS3GPP_VideoTransitionType)videoEditJava_getVideoTransitionJavaToC(
- &converted, pEnv->GetIntField(object, fieldIds.videoTransitionType));
-
- // Check if the video transition type is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, !converted,
- "transition.videoTransitionType is invalid");
- }
-
- // Check if the video transition type could be set.
- if (*pResult)
- {
- // Set the external transition video effect function.
- pSettings->ExtVideoTransitionFct = M4OSA_NULL;
-
- // Set the context of the external transition video effect function.
- pSettings->pExtVideoTransitionFctCtxt = M4OSA_NULL;
-
- // Set the type of the audio transition.
- pSettings->AudioTransitionType =
- (M4VSS3GPP_AudioTransitionType)videoEditJava_getAudioTransitionJavaToC(
- &converted, pEnv->GetIntField(object, fieldIds.audioTransitionType));
-
- // Check if the audio transition type is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, !converted,
- "transition.audioTransitionType is invalid");
- }
-
- // Check if the audio transition type could be set.
- if (*pResult)
- {
- // Set the transition behaviour.
- pSettings->TransitionBehaviour =
- (M4VSS3GPP_TransitionBehaviour)videoEditJava_getTransitionBehaviourJavaToC(
- &converted, pEnv->GetIntField(object, fieldIds.transitionBehaviour));
-
- // Check if the transition behaviour is valid.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, !converted,
- "transition.transitionBehaviour is invalid");
- }
-
- // Check if the audio transition behaviour could be set.
- if (*pResult)
- {
- // Check if a slide transition or alpha magic setting object is expected.
- if ((int)pSettings->VideoTransitionType == M4xVSS_kVideoTransitionType_SlideTransition)
- {
- // Set the slide transition settings.
- videoEditClasses_getSlideTransitionSettings(pResult, pEnv, slideSettings,
- &pSettings->xVSS.transitionSpecific.pSlideTransitionSettings);
- }
- else if ((int)pSettings->VideoTransitionType == M4xVSS_kVideoTransitionType_AlphaMagic)
- {
- // Set the alpha magic settings.
- videoEditClasses_getAlphaMagicSettings(pResult, pEnv, alphaSettings,
- &pSettings->xVSS.transitionSpecific.pAlphaMagicSettings);
- }
- }
-
- // Check if settings could be set.
- if (*pResult)
- {
- // Return the settings.
- (*ppSettings) = pSettings;
- }
- else
- {
- // Free the settings.
- videoEditClasses_freeTransitionSettings(&pSettings);
- }
- }
-}
-
-void
-videoEditClasses_freeTransitionSettings(
- M4VSS3GPP_TransitionSettings** ppSettings)
-{
- // Check if memory was allocated for the TransitionSettings.
- if (M4OSA_NULL != (*ppSettings))
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_freeTransitionSettings()");
-
- // Check if a slide transition or alpha magic setting structure is expected.
- if ((int)(*ppSettings)->VideoTransitionType == M4xVSS_kVideoTransitionType_SlideTransition)
- {
- // Free the slide transition settings.
- videoEditClasses_freeSlideTransitionSettings(
- &(*ppSettings)->xVSS.transitionSpecific.pSlideTransitionSettings);
- }
- else
- {
- // Free the alpha magic settings.
- videoEditClasses_freeAlphaMagicSettings(
- &(*ppSettings)->xVSS.transitionSpecific.pAlphaMagicSettings);
- }
-
- // Free the settings structure.
- videoEditOsal_free((*ppSettings));
- (*ppSettings) = M4OSA_NULL;
- }
-}
-
-#ifdef VIDEOEDIT_LOGGING_ENABLED
-void
-videoEditClasses_logTransitionSettings(
- M4VSS3GPP_TransitionSettings* pSettings,
- int indentation)
-{
- // Check if memory was allocated for the TransitionSettings.
- if (M4OSA_NULL != pSettings)
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c uiTransitionDuration: %u ms", indentation, ' ',
- (unsigned int)pSettings->uiTransitionDuration);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c VideoTransitionType: %s", indentation, ' ',
- videoEditJava_getVideoTransitionString(pSettings->VideoTransitionType));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c ExtVideoTransitionFct: %s", indentation, ' ',
- (M4OSA_NULL != pSettings->ExtVideoTransitionFct) ? "set" : "<null>");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pExtVideoTransitionFctCtxt: %s", indentation, ' ',
- (M4OSA_NULL != pSettings->pExtVideoTransitionFctCtxt) ? "set" : "<null>");
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c AudioTransitionType: %s", indentation, ' ',
- videoEditJava_getAudioTransitionString(pSettings->AudioTransitionType));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c TransitionBehaviour: %s", indentation, ' ',
- videoEditJava_getTransitionBehaviourString(pSettings->TransitionBehaviour));
-
- // Check if a slide transition or alpha magic setting structure is expected.
- if ((int)pSettings->VideoTransitionType == M4xVSS_kVideoTransitionType_SlideTransition)
- {
- // Log the slide transition settings.
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pSlideTransitionSettings:", indentation, ' ');
- videoEditClasses_logSlideTransitionSettings\
- (pSettings->xVSS.transitionSpecific.pSlideTransitionSettings,
- indentation + VIDEOEDIT_LOG_INDENTATION);
- }
- else
- {
- // Log the alpha magic settings.
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c pAlphaMagicSettings:", indentation, ' ');
- videoEditClasses_logAlphaMagicSettings\
- (pSettings->xVSS.transitionSpecific.pAlphaMagicSettings,
- indentation + VIDEOEDIT_LOG_INDENTATION);
- }
- }
- else
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c <null>", indentation, ' ');
- }
-}
-#endif
-#ifdef VIDEOEDIT_LOGGING_ENABLED
-void
-videoEditPropClass_logProperties(
- VideoEditPropClass_Properties* pProperties,
- int indentation)
-{
- // Check if memory was allocated for the Properties.
- if (M4OSA_NULL != pProperties)
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_PROP_CLASSES",
- "%*c uiClipDuration: %u", indentation, ' ',
- (unsigned int)pProperties->uiClipDuration);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_PROP_CLASSES",
- "%*c FileType: %s", indentation, ' ',
- videoEditJava_getFileTypeString(pProperties->FileType));
-
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_PROP_CLASSES",
- "%*c VideoStreamType: %s", indentation, ' ',
- videoEditJava_getVideoFormatString(pProperties->VideoStreamType));
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_PROP_CLASSES",
- "%*c uiClipVideoDuration: %u", indentation, ' ',
- (unsigned int)pProperties->uiClipVideoDuration);
-
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_PROP_CLASSES",
- "%*c uiVideoBitrate: %s", indentation, ' ',
- videoEditJava_getBitrateString(pProperties->uiVideoBitrate));
-
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_PROP_CLASSES",
- "%*c uiVideoWidth: %u", indentation, ' ',
- (unsigned int)pProperties->uiVideoWidth);
-
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_PROP_CLASSES",
- "%*c uiVideoHeight: %u", indentation, ' ',
- (unsigned int)(unsigned int)pProperties->uiVideoHeight);
-
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_PROP_CLASSES",
- "%*c fAverageFrameRate: %.3f", indentation, ' ',
- pProperties->fAverageFrameRate);
-
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_PROP_CLASSES",
- "%*c AudioStreamType: %s", indentation, ' ',
- videoEditJava_getAudioFormatString(pProperties->AudioStreamType));
-
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_PROP_CLASSES",
- "%*c uiClipAudioDuration: %u", indentation, ' ',
- (unsigned int)pProperties->uiClipAudioDuration);
-
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_PROP_CLASSES",
- "%*c uiAudioBitrate: %s", indentation, ' ',
- videoEditJava_getBitrateString(pProperties->uiAudioBitrate));
-
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_PROP_CLASSES",
- "%*c uiNbChannels: %u", indentation, ' ',
- (unsigned int)pProperties->uiNbChannels);
-
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_PROP_CLASSES",
- "%*c uiSamplingFrequency: %u", indentation, ' ',
- (unsigned int)pProperties->uiSamplingFrequency);
- }
- else
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_PROP_CLASSES",
- "%*c <null>", indentation, ' ');
- }
-}
-#endif
-
-
-void
-videoEditClasses_createVersion(
- bool* pResult,
- JNIEnv* pEnv,
- M4_VersionInfo* pVersionInfo,
- jobject* pObject)
-{
-
- VideoEditJava_VersionFieldIds fieldIds;
- jclass clazz = NULL;
- jobject object = NULL;
- memset(&fieldIds, 0, sizeof(VideoEditJava_VersionFieldIds));
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_createVersion()");
-
- // Retrieve the class.
- videoEditJava_getVersionClass(pResult, pEnv, &clazz);
-
- // Retrieve the field ids.
- videoEditJava_getVersionFieldIds(pResult, pEnv, &fieldIds);
- }
-
- // Only create an object if the class and fields could be located.
- if (*pResult)
- {
- // Allocate a new object.
- object = pEnv->AllocObject(clazz);
-
- // check if alloc is done
- videoEditJava_checkAndThrowRuntimeException(pResult, pEnv,
- (NULL == object),
- M4ERR_ALLOC);
- if (NULL != object)
- {
- // Set the major field.
- pEnv->SetIntField(object, fieldIds.major, pVersionInfo->m_major);
-
- // Set the minor field.
- pEnv->SetIntField(object, fieldIds.minor, pVersionInfo->m_minor);
-
- // Set the revision field.
- pEnv->SetIntField(object, fieldIds.revision, pVersionInfo->m_revision);
-
- // Return the object.
- (*pObject) = object;
- }
- }
-}
-
-#ifdef VIDEOEDIT_LOGGING_ENABLED
-void
-videoEditClasses_logVersion(
- M4_VersionInfo* pVersionInfo,
- int indentation)
-{
- // Check if memory was allocated for the Version.
- if (M4OSA_NULL != pVersionInfo)
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c major: %u ms", indentation, ' ',
- (unsigned int)pVersionInfo->m_major);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c minor: %u", indentation, ' ',
- (unsigned int)pVersionInfo->m_minor);
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c revision: %u", indentation, ' ',
- (unsigned int)pVersionInfo->m_revision);
- }
- else
- {
- VIDEOEDIT_LOG_SETTING(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "%*c <null>", indentation, ' ');
- }
-}
-#endif
-
-
-void*
-videoEditClasses_getContext(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object)
-{
- void* pContext = M4OSA_NULL;
- jclass clazz = NULL;
- VideoEditJava_EngineFieldIds fieldIds = {NULL};
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_getContext()");
-
- // Retrieve the class.
- videoEditJava_getEngineClass(pResult, pEnv, &clazz);
-
- // Retrieve the field ids.
- videoEditJava_getEngineFieldIds(pResult, pEnv, &fieldIds);
- }
-
- // Check if the class and field ids could be located.
- if (*pResult)
- {
- // Retrieve the context pointer.
- pContext = (void *)pEnv->GetLongField(object, fieldIds.context);
- }
-
- // Return the context pointer.
- return(pContext);
-}
-
-void
-videoEditClasses_setContext(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- void* pContext)
-{
- jclass clazz = NULL;
- VideoEditJava_EngineFieldIds fieldIds = {NULL};
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "videoEditClasses_setContext()");
-
- // Retrieve the class.
- videoEditJava_getEngineClass(pResult, pEnv, &clazz);
-
- // Retrieve the field ids.
- videoEditJava_getEngineFieldIds(pResult, pEnv, &fieldIds);
- }
-
- // Check if the class and field ids could be located.
- if (*pResult)
- {
- // Set the context field.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "The context value from JAVA before setting is = %p",
- (void *)pEnv->GetLongField(object, fieldIds.context));
-
- pEnv->SetLongField(object, fieldIds.context, (jlong)pContext);
- M4OSA_TRACE1_1("The context value in JNI is = %p",pContext);
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_CLASSES",
- "The context value from JAVA after setting is = %p",
- (void *)pEnv->GetLongField(object, fieldIds.context));
- }
-}
-
diff --git a/media/jni/mediaeditor/VideoEditorClasses.h b/media/jni/mediaeditor/VideoEditorClasses.h
deleted file mode 100644
index a4c82a8..0000000
--- a/media/jni/mediaeditor/VideoEditorClasses.h
+++ /dev/null
@@ -1,603 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef VIDEO_EDITOR_CLASSES_H
-#define VIDEO_EDITOR_CLASSES_H
-
-#include <VideoEditorJava.h>
-#include <VideoEditorClasses.h>
-/**
- ************************************************************************
- * @file VideoEditorClasses.h
- * @brief Interface for JNI methods/defines that have specific
- * access to class, objects and method Ids defined in Java layer
- ************************************************************************
-*/
-
-
-extern "C" {
-#include <M4xVSS_API.h>
-#include <M4VSS3GPP_API.h>
-#include <M4VSS3GPP_ErrorCodes.h>
-#include <M4MCS_ErrorCodes.h>
-#include <M4READER_Common.h>
-#include <M4WRITER_common.h>
-};
-
-/*
- * Java layer class/object name strings
- */
-#define PACKAGE_NAME "android/media/videoeditor"
-
-#define MANUAL_EDIT_ENGINE_CLASS_NAME PACKAGE_NAME"/MediaArtistNativeHelper"
-#define MEDIA_PROPERTIES_ENGINE_CLASS_NAME PACKAGE_NAME"/MediaArtistNativeHelper"
-
-#define AUDIO_FORMAT_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$AudioFormat"
-#define RESULTS_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$Results"
-#define VERSION_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$Version"
-#define AUDIO_SAMPLING_FREQUENCY_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$AudioSamplingFrequency"
-#define BITRATE_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$Bitrate"
-#define ERROR_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$Result"
-#define FILE_TYPE_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$FileType"
-#define MEDIA_RENDERING_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$MediaRendering"
-#define VIDEO_FORMAT_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$VideoFormat"
-#define VIDEO_FRAME_RATE_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$VideoFrameRate"
-#define VIDEO_FRAME_SIZE_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$VideoFrameSize"
-#define VIDEO_PROFILE_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$VideoProfile"
-#define ALPHA_MAGIC_SETTINGS_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$AlphaMagicSettings"
-#define AUDIO_EFFECT_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$AudioEffect"
-#define AUDIO_TRANSITION_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$AudioTransition"
-#define BACKGROUND_MUSIC_SETTINGS_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$BackgroundMusicSettings"
-#define CLIP_SETTINGS_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$ClipSettings"
-#define EDIT_SETTINGS_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$EditSettings"
-#define EFFECT_SETTINGS_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$EffectSettings"
-#define SLIDE_DIRECTION_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$SlideDirection"
-#define SLIDE_TRANSITION_SETTINGS_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$SlideTransitionSettings"
-#define TRANSITION_BEHAVIOUR_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$TransitionBehaviour"
-#define TRANSITION_SETTINGS_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$TransitionSettings"
-#define VIDEO_EFFECT_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$VideoEffect"
-#define VIDEO_TRANSITION_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$VideoTransition"
-#define PREVIEW_CLIPS_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$PreviewClips"
-#define PREVIEW_SETTING_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$PreviewSettings"
-#define PREVIEW_PROPERTIES_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$PreviewClipProperties"
-#define AUDIO_SETTINGS_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$AudioSettings"
-#define PROPERTIES_CLASS_NAME MANUAL_EDIT_ENGINE_CLASS_NAME"$Properties"
-
-#define TASK_IDLE 0
-#define TASK_LOADING_SETTINGS 1
-#define TASK_ENCODING 2
-
-/*
- * File type enum
- */
-typedef enum
-{
- VideoEditClasses_kFileType_3GPP,
- VideoEditClasses_kFileType_MP4,
- VideoEditClasses_kFileType_AMR,
- VideoEditClasses_kFileType_MP3,
- VideoEditClasses_kFileType_PCM,
- VideoEditClasses_kFileType_JPG,
- VideoEditClasses_kFileType_BMP,
- VideoEditClasses_kFileType_GIF,
- VideoEditClasses_kFileType_PNG,
- VideoEditClasses_kFileType_ARGB8888,
- VideoEditClasses_kFileType_M4V,
- VideoEditClasses_kFileType_Unsupported
-} VideoEditClasses_FileType;
-
-/*
- * Alpha magic transition structure
- */
-typedef struct
-{
- jfieldID file;
- jfieldID blendingPercent;
- jfieldID invertRotation;
- jfieldID rgbWidth;
- jfieldID rgbHeight;
-} VideoEditJava_AlphaMagicFieldIds;
-
-typedef struct
-{
- jfieldID file;
- jfieldID fileType;
- jfieldID insertionTime;
- jfieldID volumePercent;
- jfieldID beginLoop;
- jfieldID endLoop;
- jfieldID enableDucking;
- jfieldID duckingThreshold;
- jfieldID lowVolume;
- jfieldID isLooping;
-} VideoEditJava_BackgroundMusicFieldIds;
-/*
- * Structure to hold media properties from native layer
- */
-typedef struct {
- M4OSA_UInt32 uiClipDuration;
- VideoEditClasses_FileType FileType;
- M4VIDEOEDITING_VideoFormat VideoStreamType;
- M4OSA_UInt32 uiClipVideoDuration;
- M4OSA_UInt32 uiVideoBitrate;
- M4OSA_UInt32 uiVideoWidth;
- M4OSA_UInt32 uiVideoHeight;
- M4OSA_Float fAverageFrameRate;
- M4OSA_UInt32 uiVideoProfile; /**< H263 or MPEG-4 or H264 profile(from core decoder) */
- M4OSA_UInt32 uiVideoLevel; /**< H263 or MPEG-4 or H264 level*/
- M4OSA_Bool bProfileSupported;
- M4OSA_Bool bLevelSupported;
- M4VIDEOEDITING_AudioFormat AudioStreamType;
- M4OSA_UInt32 uiClipAudioDuration;
- M4OSA_UInt32 uiAudioBitrate;
- M4OSA_UInt32 uiNbChannels;
- M4OSA_UInt32 uiSamplingFrequency;
- M4OSA_UInt32 uiRotation;
-} VideoEditPropClass_Properties;
-
-typedef struct
-{
- jfieldID duration;
- jfieldID fileType;
- jfieldID videoFormat;
- jfieldID videoDuration;
- jfieldID videoBitrate;
- jfieldID width;
- jfieldID height;
- jfieldID averageFrameRate;
- jfieldID profile;
- jfieldID level;
- jfieldID profileSupported;
- jfieldID levelSupported;
- jfieldID audioFormat;
- jfieldID audioDuration;
- jfieldID audioBitrate;
- jfieldID audioChannels;
- jfieldID audioSamplingFrequency;
- jfieldID videoRotation;
-} VideoEditJava_PropertiesFieldIds;
-
-
-typedef struct
-{
- jfieldID clipPath;
- jfieldID fileType;
- jfieldID beginCutTime;
- jfieldID endCutTime;
- jfieldID beginCutPercent;
- jfieldID endCutPercent;
- jfieldID panZoomEnabled;
- jfieldID panZoomPercentStart;
- jfieldID panZoomTopLeftXStart;
- jfieldID panZoomTopLeftYStart;
- jfieldID panZoomPercentEnd;
- jfieldID panZoomTopLeftXEnd;
- jfieldID panZoomTopLeftYEnd;
- jfieldID mediaRendering;
- jfieldID rgbFileWidth;
- jfieldID rgbFileHeight;
- jfieldID rotationDegree;
-} VideoEditJava_ClipSettingsFieldIds;
-
-typedef struct
-{
- jfieldID clipSettingsArray;
- jfieldID transitionSettingsArray;
- jfieldID effectSettingsArray;
- jfieldID videoFrameRate;
- jfieldID outputFile;
- jfieldID videoFrameSize;
- jfieldID videoFormat;
- jfieldID videoProfile;
- jfieldID videoLevel;
- jfieldID audioFormat;
- jfieldID audioSamplingFreq;
- jfieldID maxFileSize;
- jfieldID audioChannels;
- jfieldID videoBitrate;
- jfieldID audioBitrate;
- jfieldID backgroundMusicSettings;
- jfieldID primaryTrackVolume;
-} VideoEditJava_EditSettingsFieldIds;
-
-
-typedef struct
-{
- jfieldID startTime;
- jfieldID duration;
- jfieldID videoEffectType;
- jfieldID audioEffectType;
- jfieldID startPercent;
- jfieldID durationPercent;
- jfieldID framingFile;
- jfieldID framingBuffer;
- jfieldID bitmapType;
- jfieldID width;
- jfieldID height;
- jfieldID topLeftX;
- jfieldID topLeftY;
- jfieldID framingResize;
- jfieldID framingScaledSize;
- jfieldID text;
- jfieldID textRenderingData;
- jfieldID textBufferWidth;
- jfieldID textBufferHeight;
- jfieldID fiftiesFrameRate;
- jfieldID rgb16InputColor;
- jfieldID alphaBlendingStartPercent;
- jfieldID alphaBlendingMiddlePercent;
- jfieldID alphaBlendingEndPercent;
- jfieldID alphaBlendingFadeInTimePercent;
- jfieldID alphaBlendingFadeOutTimePercent;
-} VideoEditJava_EffectSettingsFieldIds;
-
-typedef struct
-{
- jfieldID context;
-} VideoEditJava_EngineFieldIds;
-
-typedef struct
-{
- jfieldID direction;
-} VideoEditJava_SlideTransitionSettingsFieldIds;
-
-typedef struct
-{
- jfieldID duration;
- jfieldID videoTransitionType;
- jfieldID audioTransitionType;
- jfieldID transitionBehaviour;
- jfieldID alphaSettings;
- jfieldID slideSettings;
-} VideoEditJava_TransitionSettingsFieldIds;
-
-typedef struct
-{
- jfieldID major;
- jfieldID minor;
- jfieldID revision;
-} VideoEditJava_VersionFieldIds;
-
-
-typedef struct
-{
- jmethodID onProgressUpdate;
-} VideoEditJava_EngineMethodIds;
-
-
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(AudioEffect )
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(AudioFormat )
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(AudioSamplingFrequency)
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(AudioTransition )
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(Bitrate )
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(Engine )
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(Error )
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(FileType )
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(MediaRendering )
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(SlideDirection )
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(TransitionBehaviour )
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(VideoEffect )
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(VideoFormat )
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(VideoFrameRate )
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(VideoFrameSize )
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(VideoProfile )
-VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(VideoTransition )
-
-
-VIDEOEDIT_JAVA_DECLARE_FIELD_CLASS(AlphaMagic )
-VIDEOEDIT_JAVA_DECLARE_FIELD_CLASS(BackgroundMusic )
-VIDEOEDIT_JAVA_DECLARE_FIELD_CLASS(ClipSettings )
-VIDEOEDIT_JAVA_DECLARE_FIELD_CLASS(ClipSettings )
-VIDEOEDIT_JAVA_DECLARE_FIELD_CLASS(EditSettings )
-VIDEOEDIT_JAVA_DECLARE_FIELD_CLASS(EffectSettings )
-VIDEOEDIT_JAVA_DECLARE_FIELD_CLASS(Engine )
-VIDEOEDIT_JAVA_DECLARE_FIELD_CLASS(SlideTransitionSettings )
-VIDEOEDIT_JAVA_DECLARE_FIELD_CLASS(TransitionSettings )
-VIDEOEDIT_JAVA_DECLARE_FIELD_CLASS(Version )
-
-VIDEOEDIT_JAVA_DECLARE_METHOD_CLASS(Engine )
-
-/*
- * Init all Edit settings related structures
- */
-void
-videoEditClasses_init(
- bool* pResult,
- JNIEnv* pEnv);
-/**
- ************************************************************************
- * @brief Media Properties init function.
- * @param pResult (OUT) Pointer to hold result
- * @param pEnv (IN) JVM Interface pointer
- ************************************************************************
-*/
-void
-videoEditPropClass_init(
- bool* pResult,
- JNIEnv* pEnv);
-/**
- ************************************************************************
- * @brief Interface to populate Media Properties.
- * @param pResult (IN/OUT) Pointer to hold result
- * @param pEnv (IN) JVM Interface pointer
- * @param pProperties (IN) Media propeties structure pointer
- * @param pObject (OUT) Java object to hold media
- * properties for java layer.
- ************************************************************************
-*/
-void
-videoEditPropClass_createProperties(
- bool* pResult,
- JNIEnv* pEnv,
- VideoEditPropClass_Properties* pProperties,
- jobject* pObject);
-
-/**
- ************************************************************************
- * @brief Interface to log/display media properties.
- * @param pProperties (IN) Pointer holding media properties
- * @param indentation (IN) Indentation to follow in display
- ************************************************************************
-*/
-void
-videoEditPropClass_logProperties(
- VideoEditPropClass_Properties* pProperties,
- int indentation);
-
-/*
- * Get alpha magic transition settings
- */
-void
-videoEditClasses_getAlphaMagicSettings(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- M4xVSS_AlphaMagicSettings** ppSettings);
-
-/*
- * Free alpha magic transition settings structure
- */
-void
-videoEditClasses_freeAlphaMagicSettings(
- M4xVSS_AlphaMagicSettings** ppSettings);
-
-/*
- * Log alpha magic transition settings
- */
-void
-videoEditClasses_logAlphaMagicSettings(
- M4xVSS_AlphaMagicSettings* pSettings,
- int indentation);
-
-/*
- * Get Background Track settings
- */
-void
-videoEditClasses_getBackgroundMusicSettings(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- M4xVSS_BGMSettings** ppSettings);
-
-/*
- * Free Background Track settings structure
- */
-void
-videoEditClasses_freeBackgroundMusicSettings(
- M4xVSS_BGMSettings** ppSettings);
-
-/*
- * Log Background Track settings
- */
-void
-videoEditClasses_logBackgroundMusicSettings(
- M4xVSS_BGMSettings* pSettings,
- int indentation);
-
-/*
- * Log clip properties
- */
-void
-videoEditClasses_logClipProperties(
- M4VIDEOEDITING_ClipProperties* pProperties,
- int indentation);
-
-/*
- * Get clip settings from Java
- */
-void
-videoEditClasses_getClipSettings(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- M4VSS3GPP_ClipSettings** ppSettings);
-/**
- ************************************************************************
- * @brief Interface function to retrieve media properties for a given
- * file.
- * @param pEnv (IN) Pointer holding media properties
- * @param thiz (IN) Indentation to follow in display
- * @param file (IN) File path for which media properties has
- * to be retrieved.
- ************************************************************************
-*/
-jobject
-videoEditProp_getProperties(
- JNIEnv* pEnv,
- jobject thiz,
- jstring file);
-
-/*
- * Create/Set the clip settings to java Object
- */
-void
-videoEditClasses_createClipSettings(
- bool* pResult,
- JNIEnv* pEnv,
- M4VSS3GPP_ClipSettings* pSettings,
- jobject* pObject);
-
-/*
- * Free clip settings structure
- */
-void
-videoEditClasses_freeClipSettings(
- M4VSS3GPP_ClipSettings** ppSettings);
-
-/*
- * Log clip settings structure
- */
-void
-videoEditClasses_logClipSettings(
- M4VSS3GPP_ClipSettings* pSettings,
- int indentation);
-
-/*
- * Get Edit settings from Java
- */
-void
-videoEditClasses_getEditSettings(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- M4VSS3GPP_EditSettings** ppSettings,
- bool flag);
-
-/*
- * Free Edit Settings structure
- */
-void
-videoEditClasses_freeEditSettings(
- M4VSS3GPP_EditSettings** ppSettings);
-
-/*
- * Log Edit settings structure
- */
-void
-videoEditClasses_logEditSettings(
- M4VSS3GPP_EditSettings* pSettings,
- int indentation);
-
-/*
- * Get Effect settings from Java
- */
-void
-videoEditClasses_getEffectSettings(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- M4VSS3GPP_EffectSettings* pSettings);
-
-/*
- * Free Effect settings structure
- */
-void
-videoEditClasses_freeEffectSettings(
- M4VSS3GPP_EffectSettings* pSettings);
-
-/*
- * Log Effect settings
- */
-void
-videoEditClasses_logEffectSettings(
- M4VSS3GPP_EffectSettings* pSettings,
- int indentation);
-
-/*
- * Get Transition-Sliding settings from Java
- */
-void
-videoEditClasses_getSlideTransitionSettings(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- M4xVSS_SlideTransitionSettings** ppSettings);
-
-/*
- * Free Transition-Sliding structure
- */
-void
-videoEditClasses_freeSlideTransitionSettings(
- M4xVSS_SlideTransitionSettings** ppSettings);
-
-/*
- * Free Transition-Sliding structure
- */
-void
-videoEditClasses_logSlideTransitionSettings(
- M4xVSS_SlideTransitionSettings* pSettings,
- int indentation);
-
-/*
- * Get Transition settings from Java
- */
-void
-videoEditClasses_getTransitionSettings(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- M4VSS3GPP_TransitionSettings** ppSettings);
-
-/*
- * Free Transition settings structure
- */
-void
-videoEditClasses_freeTransitionSettings(
- M4VSS3GPP_TransitionSettings** ppSettings);
-
-/*
- * Log Transition settings
- */
-void
-videoEditClasses_logTransitionSettings(
- M4VSS3GPP_TransitionSettings* pSettings,
- int indentation);
-
-/*
- * Set version information to Java object
- */
-void
-videoEditClasses_createVersion(
- bool* pResult,
- JNIEnv* pEnv,
- M4_VersionInfo* pVersionInfo,
- jobject* pObject);
-
-/*
- * Log Version information
- */
-void
-videoEditClasses_logVersion(
- M4_VersionInfo* pVersionInfo,
- int indentation);
-
-
-void*
-videoEditClasses_getContext(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object);
-
-void
-videoEditClasses_setContext(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- void* pContext);
-
-
-#endif // VIDEO_EDITOR_CLASSES_H
-
diff --git a/media/jni/mediaeditor/VideoEditorJava.cpp b/media/jni/mediaeditor/VideoEditorJava.cpp
deleted file mode 100644
index fde0fb5..0000000
--- a/media/jni/mediaeditor/VideoEditorJava.cpp
+++ /dev/null
@@ -1,901 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "VideoEditorJava"
-
-#include <VideoEditorClasses.h>
-#include <VideoEditorJava.h>
-#include <VideoEditorLogging.h>
-#include <VideoEditorOsal.h>
-
-extern "C" {
-#include <M4OSA_CharStar.h>
-};
-
-
-void
-videoEditJava_checkAndThrowIllegalArgumentExceptionFunc(
- bool* pResult,
- JNIEnv* pEnv,
- bool condition,
- const char* pMessage,
- const char* pFile,
- int lineNo)
-{
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Check if the condition is true.
- if (condition)
- {
- // Log the exception.
- VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA",\
- "videoEditJava_checkAndThrowIllegalArgumentException, %s (%s:%d)",
- pMessage, pFile, lineNo);
-
- // Reset the result flag.
- (*pResult) = false;
-
- // Throw an exception.
- jniThrowException(pEnv, "java/lang/IllegalArgumentException", pMessage);
- }
- }
-}
-
-void
-videoEditJava_checkAndThrowRuntimeExceptionFunc(
- bool* pResult,
- JNIEnv* pEnv,
- bool condition,
- M4OSA_ERR result,
- const char* pFile,
- int lineNo
- )
-{
- const char* pMessage = NULL;
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Check if the condition is true.
- if (condition)
- {
- // Get the error string.
- pMessage = videoEditJava_getErrorName(result);
-
- // Log the exception.
- VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA",
- "videoEditJava_checkAndThrowRuntimeException, %s (%s:%d)",
- pMessage, pFile, lineNo);
-
- // Reset the result flag.
- (*pResult) = false;
-
- // Throw an exception.
- jniThrowException(pEnv, "java/lang/RuntimeException", pMessage);
- }
- }
-}
-
-void
-videoEditJava_checkAndThrowIllegalStateExceptionFunc(
- bool* pResult,
- JNIEnv* pEnv,
- bool condition,
- const char* pMessage,
- const char* pFile,
- int lineNo
- )
-{
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Check if the condition is true.
- if (condition)
- {
- // Log the exception.
- VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA",
- "videoEditJava_checkAndThrowIllegalStateException, %s (%s:%d)",
- pMessage, pFile, lineNo);
-
- // Reset the result flag.
- (*pResult) = false;
-
- // Throw an exception.
- jniThrowException(pEnv, "java/lang/IllegalStateException", pMessage);
- }
- }
-}
-
-void
-videoEditJava_getClass(
- bool* pResult,
- JNIEnv* pEnv,
- const char* pName,
- jclass* pClazz)
-{
- // Only look for the class if locating the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
- "videoEditJava_getClass(%s)", pName);
-
- // Look up the class.
- jclass clazz = pEnv->FindClass(pName);
-
- // Clear any resulting exceptions.
- pEnv->ExceptionClear();
-
- // Check if the class could be located.
- if (NULL != clazz)
- {
- // Return the class.
- (*pClazz) = clazz;
- }
- else
- {
- // Reset the result flag.
- (*pResult) = false;
-
- // Log the error.
- VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA",
- "videoEditJava_getClass, error: unable to locate class %s", pName);
-
- // Throw an exception.
- jniThrowException(pEnv, "java/lang/ClassNotFoundException",
- "unable to locate class");
- }
- }
-}
-
-void
-videoEditJava_getMethodId(
- bool* pResult,
- JNIEnv* pEnv,
- jclass clazz,
- const char* pName,
- const char* pType,
- jmethodID* pMethodId)
-{
- // Only look for the class if locating the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
- "videoEditJava_getMethodId(%s,%s)", pName, pType);
-
- // Look up the method id.
- jmethodID methodId = pEnv->GetMethodID(clazz, pName, pType);
-
- // Clear any resulting exceptions.
- pEnv->ExceptionClear();
-
- // Check if the method could be located.
- if (NULL != methodId)
- {
- // Return the method id.
- (*pMethodId) = methodId;
- }
- else
- {
- // Reset the result flag.
- (*pResult) = false;
-
- // Log the error.
- VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA",
- "videoEditJava_getMethodId, error: unable to locate method %s with type %s",
- pName, pType);
-
- // Throw an exception.
- jniThrowException(pEnv, "java/lang/NoSuchMethodException", "unable to locate method");
- }
- }
-}
-
-void
-videoEditJava_getFieldId(
- bool* pResult,
- JNIEnv* pEnv,
- jclass clazz,
- const char* pName,
- const char* pType,
- jfieldID* pFieldId)
-{
- // Only look for the class if locating the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
- "videoEditJava_getFieldId(%s,%s)", pName, pType);
-
- // Look up the field id.
- jfieldID fieldId = pEnv->GetFieldID(clazz, pName, pType);
-
- // Clear any resulting exceptions.
- pEnv->ExceptionClear();
-
- // Check if the field could be located.
- if (NULL != fieldId)
- {
- // Return the field id.
- (*pFieldId) = fieldId;
- }
- else
- {
- // Reset the result flag.
- (*pResult) = false;
-
- // Log the error.
- VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA",
- "videoEditJava_getFieldId, error: unable to locate field %s with type %s",
- pName, pType);
-
- // Throw an exception.
- jniThrowException(pEnv, "java/lang/NoSuchFieldException", "unable to locate field");
- }
- }
-}
-
-void
-videoEditJava_getObject(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- jfieldID objectFieldId,
- jobject* pObject)
-{
- // Only retrieve the array object and size if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
- "videoEditJava_getObject()");
-
- // Retrieve the object.
- (*pObject) = pEnv->GetObjectField(object, objectFieldId);
-
- // Clear any resulting exceptions.
- pEnv->ExceptionClear();
- }
-}
-
-void
-videoEditJava_getArray(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- jfieldID arrayFieldId,
- jobjectArray* pArray,
- jsize* pArraySize)
-{
- // Only retrieve the array object and size if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", "videoEditJava_getArray()");
-
- // Retrieve the array object.
- jobjectArray array = (jobjectArray)pEnv->GetObjectField(object, arrayFieldId);
- jsize arraySize = 0;
-
- // Clear any resulting exceptions.
- pEnv->ExceptionClear();
-
- // Check if the array could be retrieved.
- if (NULL != array)
- {
- // Retrieve the array size.
- arraySize = pEnv->GetArrayLength(array);
- }
-
- // Return the array and its size.
- (*pArray) = array;
- (*pArraySize) = arraySize;
- }
-}
-
-void*
-videoEditJava_getString(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- jfieldID stringFieldId,
- M4OSA_UInt32* pLength)
-{
- void* pString = M4OSA_NULL;
- jstring string = NULL;
- M4OSA_UInt32 length = 0;
- M4OSA_Char* pLocal = M4OSA_NULL;
- M4OSA_ERR result = M4NO_ERROR;
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA", "videoEditJava_getString()");
-
- // Check if an object containing a string was specified.
- if (NULL != stringFieldId)
- {
- // Retrieve the string object.
- string = (jstring)pEnv->GetObjectField(object, stringFieldId);
-
- // Clear any resulting exceptions.
- pEnv->ExceptionClear();
- }
- else
- {
- // The string itself was specified.
- string = (jstring)object;
- }
-
- // Check if the string could be retrieved.
- if (NULL != string)
- {
- // Get a local copy of the string.
- pLocal = (M4OSA_Char*)pEnv->GetStringUTFChars(string, M4OSA_NULL);
- if (M4OSA_NULL != pLocal)
- {
- // Determine the length of the path
- // (add one extra character for the zero terminator).
- length = strlen((const char *)pLocal) + 1;
-
- // Allocate memory for the string.
- pString = videoEditOsal_alloc(pResult, pEnv, length, "String");
- if (*pResult)
- {
- // Copy the string.
- result = M4OSA_chrNCopy((M4OSA_Char*)pString, pLocal, length);
-
- // Check if the copy succeeded.
- videoEditJava_checkAndThrowRuntimeException(pResult, pEnv,
- (M4NO_ERROR != result), result);
-
- // Check if the string could not be copied.
- if (!(*pResult))
- {
- // Free the allocated memory.
- videoEditOsal_free(pString);
- pString = M4OSA_NULL;
- }
- }
-
- // Release the local copy of the string.
- pEnv->ReleaseStringUTFChars(string, (const char *)pLocal);
- }
- }
-
- // Check if the string was empty or could be copied.
- if (*pResult)
- {
- // Check if the length was requested.
- if (M4OSA_NULL != pLength)
- {
- // Return the length.
- (*pLength) = length;
- }
- }
-
- // Delete local references to avoid memory leaks
- pEnv->DeleteLocalRef(string);
- }
-
- // Return the string.
- return(pString);
-}
-
-void
-videoEditJava_getStaticIntField(
- bool* pResult,
- JNIEnv* pEnv,
- jclass clazz,
- const char* pName,
- int* pValue)
-{
- // Only look for the class if locating the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
- "videoEditJava_getStaticIntField(%s)", pName);
-
- // Look up the field id.
- jfieldID fieldId = pEnv->GetStaticFieldID(clazz, pName, "I");
-
- // Clear any resulting exceptions.
- pEnv->ExceptionClear();
-
- // Check if the field could be located.
- if (NULL != fieldId)
- {
- // Retrieve the field value.
- (*pValue) = pEnv->GetStaticIntField(clazz, fieldId);
-
- // Log the value.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
- "videoEditJava_getStaticIntField, %s = %d", pName, (*pValue));
- }
- else
- {
- // Reset the result flag.
- (*pResult) = false;
-
- // Log the error.
- VIDEOEDIT_LOG_EXCEPTION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_JAVA",
- "videoEditJava_getStaticIntField, error: unable to locate field %s", pName);
-
- // Throw an exception.
- jniThrowException(pEnv, "java/lang/NoSuchFieldException",
- "unable to locate static field");
- }
- }
-}
-
-void
-videoEditJava_initConstantClass(
- bool* pResult,
- JNIEnv* pEnv,
- VideoEditJava_ConstantsClass* pClass)
-{
- bool gotten = true;
- jclass clazz = NULL;
- int index = 0;
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
- "videoEditJava_initConstantClass(%s)", pClass->pName);
-
- // Only initialize the class once.
- if (!pClass->initialized)
- {
- // Look up the class.
- videoEditJava_getClass(pResult, pEnv, pClass->pName, &clazz);
-
- // Loop over the constants.
- for (index = 0; index < pClass->count; index++)
- {
- // Look up the constant.
- videoEditJava_getStaticIntField(pResult, pEnv, clazz,
- pClass->pConstants[index].pName,
- &pClass->pConstants[index].java);
- }
-
- // Check if all constants could be located.
- if (*pResult)
- {
- // Set the initialized flag.
- pClass->initialized = true;
- }
- }
- }
-}
-
-const char*
-videoEditJava_getConstantClassName(
- const VideoEditJava_ConstantsClass* pClass,
- int value,
- VideoEditJava_UnknownConstant unknown)
-{
- const char* pName = M4OSA_NULL;
- int index = 0;
-
- // Loop over the list with constants.
- for (index = 0;
- ((M4OSA_NULL == pName) && (index < pClass->count));
- index++)
- {
- // Check if the specified value matches the c value of the constant.
- if (value == pClass->pConstants[index].c)
- {
- // Set the name.
- pName = pClass->pConstants[index].pName;
- }
- }
-
- // Check if no constant was found.
- if (M4OSA_NULL == pName)
- {
- // Check if a function was specified to handle this case.
- if (M4OSA_NULL != unknown)
- {
- // Pass the constant to the specified unknown function.
- pName = unknown(value);
- }
- else
- {
- // Set the description to a default value.
- pName = "<unknown>";
- }
- }
-
- // Return the result.
- return(pName);
-}
-
-const char*
-videoEditJava_getConstantClassString(
- const VideoEditJava_ConstantsClass* pClass,
- int value,
- VideoEditJava_UnknownConstant unknown)
-{
- const char* pString = M4OSA_NULL;
- int index = 0;
-
- // Loop over the list with constants.
- for (index = 0;
- ((M4OSA_NULL == pString) && (index < pClass->count));
- index++)
- {
- // Check if the specified value matches the c value of the constant.
- if (value == pClass->pConstants[index].c)
- {
- // Set the description.
- pString = pClass->pConstants[index].pDescription;
- }
- }
-
- // Check if no constant was found.
- if (M4OSA_NULL == pString)
- {
- // Check if a function was specified to handle this case.
- if (M4OSA_NULL != unknown)
- {
- // Pass the constant to the specified unknown function.
- pString = unknown(value);
- }
- else
- {
- // Set the description to a default value.
- pString = "<unknown>";
- }
- }
-
- // Return the result.
- return(pString);
-}
-
-int
-videoEditJava_getConstantClassJavaToC(
- bool* pResult,
- const VideoEditJava_ConstantsClass* pClass,
- int value)
-{
- bool gotten = false;
- int index = 0;
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Loop over the list with constants.
- for (index = 0; ((!gotten) && (index < pClass->count)); index++)
- {
- // Check if the specified value matches the java value of the constant.
- if (value == pClass->pConstants[index].java)
- {
- // Set the value to the c value.
- value = pClass->pConstants[index].c;
-
- // Set the gotten flag.
- gotten = true;
- }
- }
-
- // Check if the value was not found.
- if (!gotten)
- {
- (*pResult) = false;
- }
- }
-
- // Return the translated value.
- return(value);
-}
-
-int
-videoEditJava_getConstantClassJavaToC(
- bool* pResult,
- const VideoEditJava_ConstantsClass* pClass,
- int value,
- int unknown)
-{
- bool gotten = false;
- int index = 0;
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Loop over the list with constants.
- for (index = 0; ((!gotten) && (index < pClass->count)); index++)
- {
- // Check if the specified value matches the java value of the constant.
- if (value == pClass->pConstants[index].java)
- {
- // Set the value to the c value.
- value = pClass->pConstants[index].c;
-
- // Set the gotten flag.
- gotten = true;
- }
- }
-
- // If the constant was not found, look for the specified unknown.
- if (!gotten)
- {
- // Set the value to the c value.
- value = unknown;
- }
- }
-
- // Return the translated value.
- return(value);
-}
-
-int
-videoEditJava_getConstantClassCToJava(
- const VideoEditJava_ConstantsClass* pClass,
- int value)
-{
- bool gotten = false;
- int index = 0;
-
- // Loop over the list with constants.
- for (index = 0; ((!gotten) && (index < pClass->count)); index++)
- {
- // Check if the specified value matches the c value of the constant.
- if (value == pClass->pConstants[index].c)
- {
- // Set the value to the java value.
- value = pClass->pConstants[index].java;
-
- // Set the gotten flag.
- gotten = true;
- }
- }
-
- // Return the translated value.
- return(value);
-}
-
-int
-videoEditJava_getConstantClassCToJava(
- const VideoEditJava_ConstantsClass* pClass,
- int value,
- int unknown)
-{
- bool gotten = false;
- int index = 0;
-
- // Loop over the list with constants.
- for (index = 0; ((!gotten) && (index < pClass->count)); index++)
- {
- // Check if the specified value matches the c value of the constant.
- if (value == pClass->pConstants[index].c)
- {
- // Set the value to the java value.
- value = pClass->pConstants[index].java;
-
- // Set the gotten flag.
- gotten = true;
- }
- }
-
- // If the constant was not found, look for the specified unknown.
- if (!gotten)
- {
- // Loop over the list with constants.
- for (index = 0; ((!gotten) && (index < pClass->count)); index++)
- {
- // Check if the specified value matches the java value of the constant.
- if (unknown == pClass->pConstants[index].c)
- {
- // Set the value to the c value.
- value = pClass->pConstants[index].java;
-
- // Set the gotten flag.
- gotten = true;
- }
- }
- }
-
- // Return the translated value.
- return(value);
-}
-
-void
-videoEditJava_initFieldClass(
- bool* pResult,
- JNIEnv* pEnv,
- VideoEditJava_FieldsClass* pClass)
-{
- bool gotten = true;
- jclass clazz = NULL;
- int index = 0;
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
- "videoEditJava_initFieldClass(%s)", pClass->pName);
-
- // Only initialize the class once.
- if (!pClass->initialized)
- {
- // Look up the class.
- videoEditJava_getClass(pResult, pEnv, pClass->pName, &clazz);
-
- // Loop over the fields.
- for (index = 0; index < pClass->count; index++)
- {
- // Look up the field id.
- videoEditJava_getFieldId(
- pResult,
- pEnv,
- clazz,
- pClass->pFields[index].pName,
- pClass->pFields[index].pType,
- &pClass->pFields[index].fieldId);
- }
-
- // Check if all fields could be located.
- if (*pResult)
- {
- // Set the initialized flag.
- pClass->initialized = true;
- }
- }
- }
-}
-
-void
-videoEditJava_fieldClassClass(
- bool* pResult,
- JNIEnv* pEnv,
- const VideoEditJava_FieldsClass* pClass,
- jclass* pClazz)
-{
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Check if the class is initialized.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, (!pClass->initialized),
- "field class not initialized");
-
- // Get the class.
- videoEditJava_getClass(pResult, pEnv, pClass->pName, pClazz);
- }
-}
-
-void
-videoEditJava_fieldClassFieldIds(
- bool* pResult,
- JNIEnv* pEnv,
- const VideoEditJava_FieldsClass* pClass,
- int count,
- VideoEditJava_FieldIds* pIds)
-{
- int index = 0;
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Check if the class is initialized.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, (!pClass->initialized),
- "field class not initialized");
-
- // Check if the number of fields matches.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,
- (pClass->count != count),
- "field class type mismatch");
-
- // Check if the class and object are valid.
- if (*pResult)
- {
- // Loop over the class fields.
- for (index = 0; index < count; index++)
- {
- // Copy the field ids.
- pIds->fieldIds[index] = pClass->pFields[index].fieldId;
- }
- }
- }
-}
-
-void
-videoEditJava_initMethodClass(
- bool* pResult,
- JNIEnv* pEnv,
- VideoEditJava_MethodsClass* pClass)
-{
- bool gotten = true;
- jclass clazz = NULL;
- int index = 0;
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Log the function call.
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_JAVA",
- "videoEditJava_initMethodClass(%s)", pClass->pName);
-
- // Only initialize the class once.
- if (!pClass->initialized)
- {
- // Look up the class.
- videoEditJava_getClass(pResult, pEnv, pClass->pName, &clazz);
-
- // Loop over the methods.
- for (index = 0; index < pClass->count; index++)
- {
- // Look up the method id.
- videoEditJava_getMethodId(
- pResult,
- pEnv,
- clazz,
- pClass->pMethods[index].pName,
- pClass->pMethods[index].pType,
- &pClass->pMethods[index].methodId);
- }
-
- // Check if all methods could be located.
- if (*pResult)
- {
- // Set the initialized flag.
- pClass->initialized = true;
- }
- }
- }
-}
-
-void
-videoEditJava_methodClassMethodIds(
- bool* pResult,
- JNIEnv* pEnv,
- const VideoEditJava_MethodsClass* pClass,
- int count,
- VideoEditJava_MethodIds* pIds)
-{
- int index = 0;
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Check if the class is initialized.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv, (!pClass->initialized),
- "method class not initialized");
-
- // Check if the number of methods matches.
- videoEditJava_checkAndThrowIllegalArgumentException(pResult, pEnv,\
- (pClass->count != count),
- "method class type mismatch");
-
- // Check if the class and object are valid.
- if (*pResult)
- {
- // Loop over the class methods.
- for (index = 0; index < count; index++)
- {
- // Copy the method ids.
- pIds->methodIds[index] = pClass->pMethods[index].methodId;
- }
- }
- }
-}
-
diff --git a/media/jni/mediaeditor/VideoEditorJava.h b/media/jni/mediaeditor/VideoEditorJava.h
deleted file mode 100644
index 0a2db08..0000000
--- a/media/jni/mediaeditor/VideoEditorJava.h
+++ /dev/null
@@ -1,527 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef VIDEO_EDiTOR_JAVA_H
-#define VIDEO_EDiTOR_JAVA_H
-
-#include <jni.h>
-#include <JNIHelp.h>
-
-/**
- ************************************************************************
- * @file VideoEditorJava.h
- * @brief Interface for JNI methods that have specific access to
- * class, objects and method Ids defined in Java layer
- ************************************************************************
-*/
-
-extern "C" {
-#include <M4OSA_Types.h>
-#include <M4OSA_Error.h>
-}
-
-#define VIDEOEDIT_JAVA_CONSTANT_INIT(m_name, m_c) \
- { m_name, \
- 0, \
- m_c, \
- #m_c }
-
-#define VIDEOEDIT_JAVA_DEFINE_CONSTANTS(m_class) \
-static \
-VideoEditJava_Constant g##m_class##Constants [] =
-
-#define VIDEOEDIT_JAVA_DEFINE_CONSTANT_CLASS( \
- m_class, \
- m_name, \
- m_unknownName, \
- m_unknownString) \
- \
-static VideoEditJava_ConstantsClass g##m_class##ConstantsClass = \
-{ m_name, \
- &g##m_class##Constants[0], \
- (sizeof(g##m_class##Constants) / sizeof(VideoEditJava_Constant)), \
- false \
-}; \
- \
- \
-void videoEditJava_init##m_class##Constants( \
- bool* pResult, \
- JNIEnv* pEnv) \
-{ \
- videoEditJava_initConstantClass( \
- pResult, \
- pEnv, \
- &g##m_class##ConstantsClass); \
-} \
- \
-const char* videoEditJava_get##m_class##Name( \
- int value) \
-{ \
- return(videoEditJava_getConstantClassName( \
- &g##m_class##ConstantsClass, \
- value, \
- m_unknownName)); \
-} \
- \
-const char* videoEditJava_get##m_class##String( \
- int value) \
-{ \
- return(videoEditJava_getConstantClassString( \
- &g##m_class##ConstantsClass, \
- value, \
- m_unknownString)); \
-} \
- \
-int \
-videoEditJava_get##m_class##JavaToC( \
- bool* pResult, \
- int value) \
-{ \
- return(videoEditJava_getConstantClassJavaToC( \
- pResult, \
- &g##m_class##ConstantsClass, \
- value)); \
-} \
- \
-int \
-videoEditJava_get##m_class##JavaToC( \
- bool* pResult, \
- int value, \
- int unknown) \
-{ \
- return(videoEditJava_getConstantClassJavaToC( \
- pResult, \
- &g##m_class##ConstantsClass, \
- value, \
- unknown)); \
-} \
- \
-int \
-videoEditJava_get##m_class##CToJava( \
- int value) \
-{ \
- return(videoEditJava_getConstantClassCToJava( \
- &g##m_class##ConstantsClass, \
- value)); \
-} \
- \
-int \
-videoEditJava_get##m_class##CToJava( \
- int value, \
- int unknown) \
-{ \
- return(videoEditJava_getConstantClassCToJava( \
- &g##m_class##ConstantsClass, \
- value, \
- unknown)); \
-}
-
-
-#define VIDEOEDIT_JAVA_DECLARE_CONSTANT_CLASS(m_class) \
-void \
-videoEditJava_init##m_class##Constants( \
- bool* pResult, \
- JNIEnv* pEnv); \
- \
-const char* \
-videoEditJava_get##m_class##Name( \
- int value); \
- \
-const char* \
-videoEditJava_get##m_class##String( \
- int value); \
- \
-int \
-videoEditJava_get##m_class##JavaToC( \
- bool* pResult, \
- int value, \
- int unknown); \
- \
-int \
-videoEditJava_get##m_class##JavaToC( \
- bool* pResult, \
- int value); \
- \
-int \
-videoEditJava_get##m_class##CToJava( \
- int value); \
- \
-int \
-videoEditJava_get##m_class##CToJava( \
- int value, \
- int unknown);
-
-#define VIDEOEDIT_JAVA_FIELD_INIT(m_name, m_type) \
- { m_name, \
- m_type, \
- NULL }
-
-#define VIDEOEDIT_JAVA_DEFINE_FIELDS(m_class) \
-static \
-VideoEditJava_Field g##m_class##Fields [] =
-
-#define VIDEOEDIT_JAVA_DEFINE_FIELD_CLASS(m_class, m_name) \
-static VideoEditJava_FieldsClass g##m_class##FieldsClass = \
- { m_name, \
- &g##m_class##Fields[0], \
- (sizeof(g##m_class##Fields) / sizeof(VideoEditJava_Field)), \
- false }; \
- \
-void \
-videoEditJava_init##m_class##Fields( \
- bool* pResult, \
- JNIEnv* pEnv) \
-{ \
- videoEditJava_initFieldClass( \
- pResult, \
- pEnv, \
- &g##m_class##FieldsClass); \
-} \
- \
-void \
-videoEditJava_get##m_class##Class( \
- bool* pResult, \
- JNIEnv* pEnv, \
- jclass* pClazz) \
-{ \
- videoEditJava_fieldClassClass( \
- pResult, \
- pEnv, \
- &g##m_class##FieldsClass, \
- pClazz); \
-} \
- \
-void \
-videoEditJava_get##m_class##FieldIds( \
- bool* pResult, \
- JNIEnv* pEnv, \
- VideoEditJava_##m_class##FieldIds* pIds) \
-{ \
- videoEditJava_fieldClassFieldIds( \
- pResult, \
- pEnv, \
- &g##m_class##FieldsClass, \
- (sizeof(VideoEditJava_##m_class##FieldIds) / \
- sizeof(jfieldID)), \
- (VideoEditJava_FieldIds*)pIds); \
-}
-
-#define VIDEOEDIT_JAVA_DECLARE_FIELD_CLASS(m_class) \
-void \
-videoEditJava_init##m_class##Fields( \
- bool* pResult, \
- JNIEnv* pEnv); \
- \
-void \
-videoEditJava_get##m_class##Class( \
- bool* pResult, \
- JNIEnv* pEnv, \
- jclass* pClazz); \
- \
-void \
-videoEditJava_get##m_class##FieldIds( \
- bool* pResult, \
- JNIEnv* pEnv, \
- VideoEditJava_##m_class##FieldIds* pIds);
-
-
-#define VIDEOEDIT_JAVA_METHOD_INIT(m_name, m_type) \
- { m_name, \
- m_type, \
- NULL }
-
-#define VIDEOEDIT_JAVA_DEFINE_METHODS(m_class) \
-static \
-VideoEditJava_Method g##m_class##Methods [] =
-
-#define VIDEOEDIT_JAVA_DEFINE_METHOD_CLASS(m_class, m_name) \
-static VideoEditJava_MethodsClass g##m_class##MethodsClass = \
- { m_name, \
- &g##m_class##Methods[0], \
- (sizeof(g##m_class##Methods) / sizeof(VideoEditJava_Method)), \
- false }; \
- \
-void \
-videoEditJava_init##m_class##Methods( \
- bool* pResult, \
- JNIEnv* pEnv) \
-{ \
- videoEditJava_initMethodClass( \
- pResult, \
- pEnv, \
- &g##m_class##MethodsClass); \
-} \
- \
-void \
-videoEditJava_get##m_class##MethodIds( \
- bool* pResult, \
- JNIEnv* pEnv, \
- VideoEditJava_##m_class##MethodIds* pIds) \
-{ \
- videoEditJava_methodClassMethodIds( \
- pResult, \
- pEnv, \
- &g##m_class##MethodsClass, \
- (sizeof(VideoEditJava_##m_class##MethodIds) / \
- sizeof(jmethodID)), \
- (VideoEditJava_MethodIds*)pIds); \
-}
-
-#define VIDEOEDIT_JAVA_DECLARE_METHOD_CLASS(m_class) \
-void \
-videoEditJava_init##m_class##Methods( \
- bool* pResult, \
- JNIEnv* pEnv); \
- \
-void \
-videoEditJava_get##m_class##MethodIds( \
- bool* pResult, \
- JNIEnv* pEnv, \
- VideoEditJava_##m_class##MethodIds* pIds);
-
-
-typedef struct
-{
- const char* pName;
- int java;
- int c;
- const char* pDescription;
-} VideoEditJava_Constant;
-
-typedef struct
-{
- const char* pName;
- VideoEditJava_Constant* pConstants;
- int count;
- bool initialized;
-} VideoEditJava_ConstantsClass;
-
-typedef const char* (*VideoEditJava_UnknownConstant)(int constant);
-
-typedef struct
-{
- const char* pName;
- const char* pType;
- jfieldID fieldId;
-} VideoEditJava_Field;
-
-typedef struct
-{
- const char* pName;
- VideoEditJava_Field* pFields;
- int count;
- bool initialized;
-} VideoEditJava_FieldsClass;
-
-typedef struct
-{
- jfieldID fieldIds[];
-} VideoEditJava_FieldIds;
-
-typedef struct
-{
- const char* pName;
- const char* pType;
- jmethodID methodId;
-} VideoEditJava_Method;
-
-typedef struct
-{
- const char* pName;
- VideoEditJava_Method* pMethods;
- int count;
- bool initialized;
-} VideoEditJava_MethodsClass;
-
-typedef struct
-{
- jmethodID methodIds[];
-} VideoEditJava_MethodIds;
-
-#define videoEditJava_checkAndThrowIllegalArgumentException(\
- a, b, c, d) videoEditJava_checkAndThrowIllegalArgumentExceptionFunc(\
- a, b, c, d, __FILE__, __LINE__)
-
-#define videoEditJava_checkAndThrowRuntimeException(\
- a, b, c, d) videoEditJava_checkAndThrowRuntimeExceptionFunc(\
- a, b, c, d, __FILE__, __LINE__)
-
-#define videoEditJava_checkAndThrowIllegalStateException(\
- a, b, c, d) videoEditJava_checkAndThrowIllegalStateExceptionFunc(\
- a, b, c, d, __FILE__, __LINE__)
-
-void
-videoEditJava_checkAndThrowIllegalArgumentExceptionFunc(
- bool* pResult,
- JNIEnv* pEnv,
- bool condition,
- const char* pMessage,
- const char* pFile,
- int lineNo
- );
-
-void
-videoEditJava_checkAndThrowRuntimeExceptionFunc(
- bool* pResult,
- JNIEnv* pEnv,
- bool condition,
- M4OSA_ERR result,
- const char* pFile,
- int lineNo
- );
-
-void
-videoEditJava_checkAndThrowIllegalStateExceptionFunc(
- bool* pResult,
- JNIEnv* pEnv,
- bool condition,
- const char* pMessage,
- const char* pFile,
- int lineNo
- );
-
-void
-videoEditJava_getClass(
- bool* pResult,
- JNIEnv* pEnv,
- const char* pName,
- jclass* pClazz);
-
-void
-videoEditJava_getMethodId(
- bool* pResult,
- JNIEnv* pEnv,
- jclass clazz,
- const char* pName,
- const char* pType,
- jmethodID* pMethodId);
-
-void videoEditJava_getFieldId(
- bool* pResult,
- JNIEnv* pEnv,
- jclass clazz,
- const char* pName,
- const char* pType,
- jfieldID* pFieldId);
-
-void videoEditJava_getObject(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- jfieldID objectFieldId,
- jobject* pObject);
-
-void videoEditJava_getArray(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- jfieldID arrayFieldId,
- jobjectArray* pArray,
- jsize* pArraySize);
-
-void* videoEditJava_getString(
- bool* pResult,
- JNIEnv* pEnv,
- jobject object,
- jfieldID stringFieldId,
- M4OSA_UInt32* pLength);
-
-void videoEditJava_getStaticIntField(
- bool* pResult,
- JNIEnv* env,
- jclass clazz,
- const char* pName,
- int* pValue);
-
-void
-videoEditJava_initConstantClass(
- bool* pResult,
- JNIEnv* pEnv,
- VideoEditJava_ConstantsClass* pClass);
-
-const char*
-videoEditJava_getConstantClassName(
- const VideoEditJava_ConstantsClass* pClass,
- int value,
- VideoEditJava_UnknownConstant unknown);
-
-const char*
-videoEditJava_getConstantClassString(
- const VideoEditJava_ConstantsClass* pClass,
- int value,
- VideoEditJava_UnknownConstant unknown);
-
-int
-videoEditJava_getConstantClassJavaToC(
- bool* pResult,
- const VideoEditJava_ConstantsClass* pClass,
- int value);
-
-int
-videoEditJava_getConstantClassJavaToC(
- bool* pResult,
- const VideoEditJava_ConstantsClass* pClass,
- int value,
- int unknown);
-
-int
-videoEditJava_getConstantClassCToJava(
- const VideoEditJava_ConstantsClass* pClass,
- int value);
-
-int
-videoEditJava_getConstantClassCToJava(
- const VideoEditJava_ConstantsClass* pClass,
- int value,
- int unknown);
-
-void
-videoEditJava_initFieldClass(
- bool* pResult,
- JNIEnv* pEnv,
- VideoEditJava_FieldsClass* pClass);
-
-void
-videoEditJava_fieldClassClass(
- bool* pResult,
- JNIEnv* pEnv,
- const VideoEditJava_FieldsClass* pClass,
- jclass* pClazz);
-
-void
-videoEditJava_fieldClassFieldIds(
- bool* pResult,
- JNIEnv* pEnv,
- const VideoEditJava_FieldsClass* pClass,
- int count,
- VideoEditJava_FieldIds* pIds);
-
-void
-videoEditJava_initMethodClass(
- bool* pResult,
- JNIEnv* pEnv,
- VideoEditJava_MethodsClass* pClass);
-
-void
-videoEditJava_methodClassMethodIds(
- bool* pResult,
- JNIEnv* pEnv,
- const VideoEditJava_MethodsClass* pClass,
- int count,
- VideoEditJava_MethodIds* pIds);
-
-#endif // VIDEO_EDiTOR_JAVA_H
-
diff --git a/media/jni/mediaeditor/VideoEditorLogging.h b/media/jni/mediaeditor/VideoEditorLogging.h
deleted file mode 100644
index 1f1228a..0000000
--- a/media/jni/mediaeditor/VideoEditorLogging.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef VIDEO_EDITOR_LOGGING_H
-#define VIDEO_EDITOR_LOGGING_H
-
-#ifndef LOG_TAG
-#error "No LOG_TAG defined!"
-#endif
-
-/*
- * This file is used as a proxy for cutils/log.h. Include cutils/log.h here to
- * avoid relying on import ordering.
- */
-#include <cutils/log.h>
-
-//#define VIDEOEDIT_LOGGING_ENABLED
-
-#define VIDEOEDIT_LOG_INDENTATION (3)
-
-#define VIDEOEDIT_LOG_ERROR __android_log_print
-#define VIDEOEDIT_LOG_EXCEPTION __android_log_print
-
-#ifdef VIDEOEDIT_LOGGING_ENABLED
-
-#define VIDEOEDIT_LOG_ALLOCATION __android_log_print
-#define VIDEOEDIT_LOG_API __android_log_print
-#define VIDEOEDIT_LOG_FUNCTION __android_log_print
-#define VIDEOEDIT_LOG_RESULT(x,y, ...) ALOGI(y, __VA_ARGS__ )
-#define VIDEOEDIT_LOG_SETTING __android_log_print
-#define VIDEOEDIT_LOG_EDIT_SETTINGS(m_settings) videoEditClasses_logEditSettings\
- (m_settings, VIDEOEDIT_LOG_INDENTATION)
-#define VIDEOEDIT_PROP_LOG_PROPERTIES(m_properties) videoEditPropClass_logProperties\
- (m_properties, VIDEOEDIT_LOG_INDENTATION)
-#define VIDEOEDIT_PROP_LOG_RESULT __android_log_print
-
-#else
-
-#define VIDEOEDIT_LOG_ALLOCATION (void)
-#define VIDEOEDIT_LOG_API (void)
-#define VIDEOEDIT_LOG_FUNCTION (void)
-#define VIDEOEDIT_LOG_RESULT (void)
-#define VIDEOEDIT_LOG_SETTING (void)
-#define VIDEOEDIT_LOG_EDIT_SETTINGS(m_settings) (void)m_settings
-#define VIDEOEDIT_PROP_LOG_PROPERTIES(m_properties) (void)m_properties
-#define VIDEOEDIT_PROP_LOG_RESULT (void)
-
-#endif
-
-#endif // VIDEO_EDITOR_LOGGING_H
-
diff --git a/media/jni/mediaeditor/VideoEditorMain.cpp b/media/jni/mediaeditor/VideoEditorMain.cpp
deleted file mode 100644
index 0894d74..0000000
--- a/media/jni/mediaeditor/VideoEditorMain.cpp
+++ /dev/null
@@ -1,3639 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#define LOG_NDEBUG 1
-#define LOG_TAG "VideoEditorMain"
-#include <dlfcn.h>
-#include <inttypes.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <utils/Log.h>
-#include <utils/threads.h>
-#include <VideoEditorClasses.h>
-#include <VideoEditorJava.h>
-#include <VideoEditorOsal.h>
-#include <VideoEditorLogging.h>
-#include <VideoEditorClasses.h>
-#include <VideoEditorThumbnailMain.h>
-#include <M4OSA_Debug.h>
-#include <M4xVSS_Internal.h>
-#include <gui/Surface.h>
-#include "VideoEditorPreviewController.h"
-
-#include "VideoEditorMain.h"
-
-#include <android_runtime/android_view_Surface.h>
-
-extern "C" {
-#include <M4OSA_Clock.h>
-#include <M4OSA_CharStar.h>
-#include <M4OSA_Error.h>
-#include <M4OSA_FileCommon.h>
-#include <M4OSA_FileReader.h>
-#include <M4OSA_FileWriter.h>
-#include <M4OSA_Memory.h>
-#include <M4OSA_Thread.h>
-#include <M4xVSS_API.h>
-#include <M4VSS3GPP_ErrorCodes.h>
-#include <M4MCS_API.h>
-#include <M4MCS_ErrorCodes.h>
-#include <M4READER_Common.h>
-#include <M4WRITER_common.h>
-};
-
-
-using namespace android;
-
-#define THREAD_STACK_SIZE (65536)
-
-#define VIDEOEDITOR_VERSION_MAJOR 0
-#define VIDEOEDITOR_VERSION_MINOR 0
-#define VIDEOEDITOR_VERSION_REVISION 1
-
-
-typedef enum
-{
- ManualEditState_NOT_INITIALIZED,
- ManualEditState_INITIALIZED,
- ManualEditState_ANALYZING,
- ManualEditState_ANALYZING_ERROR,
- ManualEditState_OPENED,
- ManualEditState_SAVING,
- ManualEditState_SAVING_ERROR,
- ManualEditState_SAVED,
- ManualEditState_STOPPING
-} ManualEditState;
-
-typedef struct
-{
- JavaVM* pVM;
- jobject engine;
- jmethodID onCompletionMethodId;
- jmethodID onErrorMethodId;
- jmethodID onWarningMethodId;
- jmethodID onProgressUpdateMethodId;
- jmethodID onPreviewProgressUpdateMethodId;
- jmethodID previewFrameEditInfoId;
- M4xVSS_InitParams initParams;
- void* pTextRendererHandle;
- M4xVSS_getTextRgbBufferFct pTextRendererFunction;
- M4OSA_Context engineContext;
- ManualEditState state;
- M4VSS3GPP_EditSettings* pEditSettings;
- M4OSA_Context threadContext;
- M4OSA_ERR threadResult;
- M4OSA_UInt8 threadProgress;
- VideoEditorPreviewController *mPreviewController;
- M4xVSS_AudioMixingSettings *mAudioSettings;
- /* Audio Graph changes */
- M4OSA_Context pAudioGraphMCSCtx;
- M4OSA_Bool bSkipState;
- jmethodID onAudioGraphProgressUpdateMethodId;
- Mutex mLock;
- bool mIsUpdateOverlay;
- char *mOverlayFileName;
- int mOverlayRenderingMode;
- M4DECODER_VideoDecoders* decoders;
-} ManualEditContext;
-
-extern "C" M4OSA_ERR M4MCS_open_normalMode(
- M4MCS_Context pContext,
- M4OSA_Void* pFileIn,
- M4VIDEOEDITING_FileType InputFileType,
- M4OSA_Void* pFileOut,
- M4OSA_Void* pTempFile);
-
-static M4OSA_ERR videoEditor_toUTF8Fct(
- M4OSA_Void* pBufferIn,
- M4OSA_UInt8* pBufferOut,
- M4OSA_UInt32* bufferOutSize);
-
-static M4OSA_ERR videoEditor_fromUTF8Fct(
- M4OSA_UInt8* pBufferIn,
- M4OSA_Void* pBufferOut,
- M4OSA_UInt32* bufferOutSize);
-
-static M4OSA_ERR videoEditor_getTextRgbBufferFct(
- M4OSA_Void* pRenderingData,
- M4OSA_Void* pTextBuffer,
- M4OSA_UInt32 textBufferSize,
- M4VIFI_ImagePlane** pOutputPlane);
-
-static void videoEditor_callOnProgressUpdate(
- ManualEditContext* pContext,
- int task,
- int progress);
-
-static void videoEditor_freeContext(
- JNIEnv* pEnv,
- ManualEditContext** ppContext);
-
-static M4OSA_ERR videoEditor_threadProc(
- M4OSA_Void* param);
-
-static jobject videoEditor_getVersion(
- JNIEnv* pEnv,
- jobject thiz);
-
-static void videoEditor_init(
- JNIEnv* pEnv,
- jobject thiz,
- jstring tempPath,
- jstring textRendererPath);
-
-static void videoEditor_loadSettings(
- JNIEnv* pEnv,
- jobject thiz,
- jobject settings);
-
-static void videoEditor_unloadSettings(
- JNIEnv* pEnv,
- jobject thiz);
-
-
-static void videoEditor_stopEncoding(
- JNIEnv* pEnv,
- jobject thiz);
-
-static void videoEditor_release(
- JNIEnv* pEnv,
- jobject thiz);
-static jint videoEditor_getPixels(
- JNIEnv* env,
- jobject thiz,
- jstring path,
- jintArray pixelArray,
- M4OSA_UInt32 width,
- M4OSA_UInt32 height,
- M4OSA_UInt32 timeMS);
-static jint videoEditor_getPixelsList(
- JNIEnv* env,
- jobject thiz,
- jstring path,
- jintArray pixelArray,
- M4OSA_UInt32 width,
- M4OSA_UInt32 height,
- M4OSA_UInt32 noOfThumbnails,
- jlong startTime,
- jlong endTime,
- jintArray indexArray,
- jobject callback);
-
-static void
-videoEditor_startPreview(
- JNIEnv* pEnv,
- jobject thiz,
- jobject mSurface,
- jlong fromMs,
- jlong toMs,
- jint callbackInterval,
- jboolean loop);
-
-static void
-videoEditor_populateSettings(
- JNIEnv* pEnv,
- jobject thiz,
- jobject settings,
- jobject object,
- jobject audioSettingObject);
-
-static jint videoEditor_stopPreview(JNIEnv* pEnv,
- jobject thiz);
-
-static jobject
-videoEditor_getProperties(
- JNIEnv* pEnv,
- jobject thiz,
- jstring file);
-
-static jint videoEditor_renderPreviewFrame(JNIEnv* pEnv,
- jobject thiz,
- jobject mSurface,
- jlong fromMs,
- jint surfaceWidth,
- jint surfaceHeight);
-
-static int videoEditor_registerManualEditMethods(
- JNIEnv* pEnv);
-
-static void jniPreviewProgressCallback(void* cookie, M4OSA_UInt32 msgType,
- void *argc);
-
-static jint videoEditor_renderMediaItemPreviewFrame(JNIEnv* pEnv,
- jobject thiz,
- jobject mSurface,
- jstring filePath,
- jint frameWidth,
- jint frameHeight,
- jint surfaceWidth,
- jint surfaceHeight,
- jlong fromMs);
-
-static jint videoEditor_generateAudioWaveFormSync ( JNIEnv* pEnv,
- jobject thiz,
- jstring pcmfilePath,
- jstring outGraphfilePath,
- jint frameDuration,
- jint channels,
- jint samplesCount);
-
-static int videoEditor_generateAudioRawFile(JNIEnv* pEnv,
- jobject thiz,
- jstring infilePath,
- jstring pcmfilePath );
-
-M4OSA_ERR videoEditor_generateAudio(JNIEnv* pEnv,ManualEditContext* pContext,
- M4OSA_Char* infilePath,
- M4OSA_Char* pcmfilePath );
-
-static jint
-videoEditor_generateClip(
- JNIEnv* pEnv,
- jobject thiz,
- jobject settings);
-
-static void videoEditor_clearSurface(JNIEnv* pEnv,
- jobject thiz,
- jobject surface);
-
-static JNINativeMethod gManualEditMethods[] = {
- {"getVersion", "()L"VERSION_CLASS_NAME";",
- (void *)videoEditor_getVersion },
- {"_init", "(Ljava/lang/String;Ljava/lang/String;)V",
- (void *)videoEditor_init },
- {"nativeStartPreview", "(Landroid/view/Surface;JJIZ)V",
- (void *)videoEditor_startPreview },
- {"nativePopulateSettings",
- "(L"EDIT_SETTINGS_CLASS_NAME";L"PREVIEW_PROPERTIES_CLASS_NAME";L"
- AUDIO_SETTINGS_CLASS_NAME";)V",
- (void *)videoEditor_populateSettings },
- {"nativeRenderPreviewFrame", "(Landroid/view/Surface;JII)I",
- (int *)videoEditor_renderPreviewFrame },
- {"nativeRenderMediaItemPreviewFrame",
- "(Landroid/view/Surface;Ljava/lang/String;IIIIJ)I",
- (int *)videoEditor_renderMediaItemPreviewFrame },
- {"nativeStopPreview", "()I",
- (int *)videoEditor_stopPreview },
- {"stopEncoding", "()V",
- (void *)videoEditor_stopEncoding },
- {"release", "()V",
- (void *)videoEditor_release },
- {"nativeGetPixels", "(Ljava/lang/String;[IIIJ)I",
- (void*)videoEditor_getPixels },
- {"nativeGetPixelsList", "(Ljava/lang/String;[IIIIJJ[ILandroid/media/videoeditor/MediaArtistNativeHelper$NativeGetPixelsListCallback;)I",
- (void*)videoEditor_getPixelsList },
- {"getMediaProperties",
- "(Ljava/lang/String;)Landroid/media/videoeditor/MediaArtistNativeHelper$Properties;",
- (void *)videoEditor_getProperties },
- {"nativeGenerateAudioGraph","(Ljava/lang/String;Ljava/lang/String;III)I",
- (int *)videoEditor_generateAudioWaveFormSync },
- {"nativeGenerateRawAudio", "(Ljava/lang/String;Ljava/lang/String;)I",
- (int *)videoEditor_generateAudioRawFile },
- {"nativeGenerateClip", "(L"EDIT_SETTINGS_CLASS_NAME";)I",
- (void *)videoEditor_generateClip },
- {"nativeClearSurface", "(Landroid/view/Surface;)V",
- (void *)videoEditor_clearSurface },
-};
-
-// temp file name of VSS out file
-#define TEMP_MCS_OUT_FILE_PATH "tmpOut.3gp"
-
-void
-getClipSetting(
- JNIEnv* pEnv,
- jobject object,
- M4VSS3GPP_ClipSettings* pSettings)
-{
-
- jfieldID fid;
- int field = 0;
- bool needToBeLoaded = true;
- jclass clazz = pEnv->FindClass(PROPERTIES_CLASS_NAME);
-
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == clazz),
- "not initialized");
-
- fid = pEnv->GetFieldID(clazz,"duration","I");
- pSettings->ClipProperties.uiClipDuration = pEnv->GetIntField(object,fid);
- M4OSA_TRACE1_1("duration = %d",pSettings->ClipProperties.uiClipDuration);
-
- fid = pEnv->GetFieldID(clazz,"videoFormat","I");
- pSettings->ClipProperties.VideoStreamType =
- (M4VIDEOEDITING_VideoFormat)pEnv->GetIntField(object,fid);
- M4OSA_TRACE1_1("videoFormat = %d",pSettings->ClipProperties.VideoStreamType);
-
- fid = pEnv->GetFieldID(clazz,"videoDuration","I");
- pSettings->ClipProperties.uiClipVideoDuration = pEnv->GetIntField(object,fid);
- M4OSA_TRACE1_1("videoDuration = %d",
- pSettings->ClipProperties.uiClipVideoDuration);
-
- fid = pEnv->GetFieldID(clazz,"width","I");
- pSettings->ClipProperties.uiVideoWidth = pEnv->GetIntField(object,fid);
- M4OSA_TRACE1_1("width = %d",pSettings->ClipProperties.uiVideoWidth);
-
- fid = pEnv->GetFieldID(clazz,"height","I");
- pSettings->ClipProperties.uiVideoHeight = pEnv->GetIntField(object,fid);
- M4OSA_TRACE1_1("height = %d",pSettings->ClipProperties.uiVideoHeight);
-
- fid = pEnv->GetFieldID(clazz,"audioFormat","I");
- pSettings->ClipProperties.AudioStreamType =
- (M4VIDEOEDITING_AudioFormat)pEnv->GetIntField(object,fid);
- M4OSA_TRACE1_1("audioFormat = %d",pSettings->ClipProperties.AudioStreamType);
-
- fid = pEnv->GetFieldID(clazz,"audioDuration","I");
- pSettings->ClipProperties.uiClipAudioDuration = pEnv->GetIntField(object,fid);
- M4OSA_TRACE1_1("audioDuration = %d",
- pSettings->ClipProperties.uiClipAudioDuration);
-
- fid = pEnv->GetFieldID(clazz,"audioBitrate","I");
- pSettings->ClipProperties.uiAudioBitrate = pEnv->GetIntField(object,fid);
- M4OSA_TRACE1_1("audioBitrate = %d",pSettings->ClipProperties.uiAudioBitrate);
-
- fid = pEnv->GetFieldID(clazz,"audioChannels","I");
- pSettings->ClipProperties.uiNbChannels = pEnv->GetIntField(object,fid);
- M4OSA_TRACE1_1("audioChannels = %d",pSettings->ClipProperties.uiNbChannels);
-
- fid = pEnv->GetFieldID(clazz,"audioSamplingFrequency","I");
- pSettings->ClipProperties.uiSamplingFrequency = pEnv->GetIntField(object,fid);
- M4OSA_TRACE1_1("audioSamplingFrequency = %d",
- pSettings->ClipProperties.uiSamplingFrequency);
-
- fid = pEnv->GetFieldID(clazz,"audioVolumeValue","I");
- pSettings->ClipProperties.uiClipAudioVolumePercentage =
- pEnv->GetIntField(object,fid);
- M4OSA_TRACE1_1("audioVolumeValue = %d",
- pSettings->ClipProperties.uiClipAudioVolumePercentage);
-
- fid = pEnv->GetFieldID(clazz,"videoRotation","I");
- pSettings->ClipProperties.videoRotationDegrees =
- pEnv->GetIntField(object,fid);
- M4OSA_TRACE1_1("videoRotation = %d",
- pSettings->ClipProperties.videoRotationDegrees);
-
- // Free the local references to avoid memory leaks
- pEnv->DeleteLocalRef(clazz);
-}
-
-static void jniPreviewProgressCallback (void* cookie, M4OSA_UInt32 msgType,
- void *argc)
-{
- ManualEditContext *pContext = (ManualEditContext *)cookie;
- JNIEnv* pEnv = NULL;
- bool isFinished = false;
- int currentMs = 0;
- int error = M4NO_ERROR;
- bool isUpdateOverlay = false;
- int overlayEffectIndex;
- char *extPos;
- bool isSendProgress = true;
- jstring tmpFileName;
- VideoEditorCurretEditInfo *pCurrEditInfo;
-
- // Attach the current thread.
- pContext->pVM->AttachCurrentThread(&pEnv, NULL);
- switch(msgType)
- {
- case MSG_TYPE_PROGRESS_INDICATION:
- currentMs = *(int*)argc;
- break;
- case MSG_TYPE_PLAYER_ERROR:
- currentMs = -1;
- error = *(int*)argc;
- break;
- case MSG_TYPE_PREVIEW_END:
- isFinished = true;
- break;
- case MSG_TYPE_OVERLAY_UPDATE:
- {
- int overlayFileNameLen = 0;
- isSendProgress = false;
- pContext->mIsUpdateOverlay = true;
- pCurrEditInfo = (VideoEditorCurretEditInfo*)argc;
- overlayEffectIndex = pCurrEditInfo->overlaySettingsIndex;
- ALOGV("MSG_TYPE_OVERLAY_UPDATE");
-
- if (pContext->mOverlayFileName != NULL) {
- free(pContext->mOverlayFileName);
- pContext->mOverlayFileName = NULL;
- }
-
- overlayFileNameLen =
- strlen((const char*)pContext->pEditSettings->Effects[overlayEffectIndex].xVSS.pFramingFilePath);
-
- pContext->mOverlayFileName =
- (char*)M4OSA_32bitAlignedMalloc(overlayFileNameLen+1,
- M4VS, (M4OSA_Char*)"videoEdito JNI overlayFile");
- if (pContext->mOverlayFileName != NULL) {
- strncpy (pContext->mOverlayFileName,
- (const char*)pContext->pEditSettings->
- Effects[overlayEffectIndex].xVSS.pFramingFilePath, overlayFileNameLen);
- //Change the name to png file
- extPos = strstr(pContext->mOverlayFileName, ".rgb");
- if (extPos != NULL) {
- *extPos = '\0';
- } else {
- ALOGE("ERROR the overlay file is incorrect");
- }
-
- strcat(pContext->mOverlayFileName, ".png");
- ALOGV("Conv string is %s", pContext->mOverlayFileName);
- ALOGV("Current Clip index = %d", pCurrEditInfo->clipIndex);
-
- pContext->mOverlayRenderingMode = pContext->pEditSettings->\
- pClipList[pCurrEditInfo->clipIndex]->xVSS.MediaRendering;
- ALOGV("rendering mode %d ", pContext->mOverlayRenderingMode);
-
- }
-
- break;
- }
-
- case MSG_TYPE_OVERLAY_CLEAR:
- isSendProgress = false;
- if (pContext->mOverlayFileName != NULL) {
- free(pContext->mOverlayFileName);
- pContext->mOverlayFileName = NULL;
- }
-
- ALOGV("MSG_TYPE_OVERLAY_CLEAR");
- //argc is not used
- pContext->mIsUpdateOverlay = true;
- break;
- default:
- break;
- }
-
- if (isSendProgress) {
- tmpFileName = pEnv->NewStringUTF(pContext->mOverlayFileName);
- pEnv->CallVoidMethod(pContext->engine,
- pContext->onPreviewProgressUpdateMethodId,
- currentMs,isFinished, pContext->mIsUpdateOverlay,
- tmpFileName, pContext->mOverlayRenderingMode, error);
-
- if (pContext->mIsUpdateOverlay) {
- pContext->mIsUpdateOverlay = false;
- }
-
- if (tmpFileName) {
- pEnv->DeleteLocalRef(tmpFileName);
- }
- }
-
- // Detach the current thread.
- pContext->pVM->DetachCurrentThread();
-
-}
-static M4OSA_ERR checkClipVideoProfileAndLevel(M4DECODER_VideoDecoders *pDecoders,
- M4OSA_Int32 format, M4OSA_UInt32 profile, M4OSA_UInt32 level){
-
- M4OSA_Int32 codec = 0;
- M4OSA_Bool foundCodec = M4OSA_FALSE;
- M4OSA_ERR result = M4VSS3GPP_ERR_EDITING_UNSUPPORTED_VIDEO_PROFILE;
- M4OSA_Bool foundProfile = M4OSA_FALSE;
- ALOGV("checkClipVideoProfileAndLevel format %d profile;%d level:0x%x",
- format, profile, level);
-
- switch (format) {
- case M4VIDEOEDITING_kH263:
- codec = M4DA_StreamTypeVideoH263;
- break;
- case M4VIDEOEDITING_kH264:
- codec = M4DA_StreamTypeVideoMpeg4Avc;
- break;
- case M4VIDEOEDITING_kMPEG4:
- codec = M4DA_StreamTypeVideoMpeg4;
- break;
- case M4VIDEOEDITING_kNoneVideo:
- case M4VIDEOEDITING_kNullVideo:
- case M4VIDEOEDITING_kUnsupportedVideo:
- // For these case we do not check the profile and level
- return M4NO_ERROR;
- default :
- ALOGE("checkClipVideoProfileAndLevel unsupport Video format %ld", format);
- break;
- }
-
- if (pDecoders != M4OSA_NULL && pDecoders->decoderNumber > 0) {
- VideoDecoder *pVideoDecoder = pDecoders->decoder;
- for(size_t k =0; k < pDecoders->decoderNumber; k++) {
- if (pVideoDecoder != M4OSA_NULL) {
- if (pVideoDecoder->codec == codec) {
- foundCodec = M4OSA_TRUE;
- break;
- }
- }
- pVideoDecoder++;
- }
-
- if (foundCodec) {
- VideoComponentCapabilities* pComponent = pVideoDecoder->component;
- for (size_t i = 0; i < pVideoDecoder->componentNumber; i++) {
- if (pComponent != M4OSA_NULL) {
- VideoProfileLevel *pProfileLevel = pComponent->profileLevel;
- for (size_t j =0; j < pComponent->profileNumber; j++) {
- // Check the profile and level
- if (pProfileLevel != M4OSA_NULL) {
- if (profile == pProfileLevel->mProfile) {
- foundProfile = M4OSA_TRUE;
-
- if (level <= pProfileLevel->mLevel) {
- return M4NO_ERROR;
- }
- } else {
- foundProfile = M4OSA_FALSE;
- }
- }
- pProfileLevel++;
- }
- }
- pComponent++;
- }
- }
- }
-
- if (foundProfile) {
- result = M4VSS3GPP_ERR_EDITING_UNSUPPORTED_VIDEO_LEVEL;
- } else {
- result = M4VSS3GPP_ERR_EDITING_UNSUPPORTED_VIDEO_PROFILE;
- }
-
- return result;
-}
-static jint videoEditor_stopPreview(JNIEnv* pEnv,
- jobject thiz)
-{
- ManualEditContext* pContext = M4OSA_NULL;
- bool needToBeLoaded = true;
- M4OSA_UInt32 lastProgressTimeMs = 0;
-
- // Get the context.
- pContext =
- (ManualEditContext*)videoEditClasses_getContext(&needToBeLoaded, pEnv, thiz);
-
- // Make sure that the context was set.
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == pContext),
- "not initialized");
- lastProgressTimeMs = pContext->mPreviewController->stopPreview();
-
- if (pContext->mOverlayFileName != NULL) {
- free(pContext->mOverlayFileName);
- pContext->mOverlayFileName = NULL;
- }
-
- return (jint)lastProgressTimeMs;
-}
-
-static void videoEditor_clearSurface(JNIEnv* pEnv,
- jobject thiz,
- jobject surface)
-{
- bool needToBeLoaded = true;
- M4OSA_ERR result = M4NO_ERROR;
- VideoEditor_renderPreviewFrameStr frameStr;
- const char* pMessage = NULL;
- // Let the size be QVGA
- int width = 320;
- int height = 240;
- ManualEditContext* pContext = M4OSA_NULL;
-
- // Get the context.
- pContext = (ManualEditContext*)videoEditClasses_getContext(&needToBeLoaded, pEnv, thiz);
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO,
- "VIDEO_EDITOR","pContext = 0x%x",pContext);
-
- // Make sure that the context was set.
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == pContext),
- "not initialized");
-
- // Make sure that the context was set.
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == pContext->mPreviewController),
- "not initialized");
-
- // Validate the surface parameter.
- videoEditJava_checkAndThrowIllegalArgumentException(&needToBeLoaded, pEnv,
- (NULL == surface),
- "surface is null");
-
- sp<Surface> previewSurface = android_view_Surface_getSurface(pEnv, surface);
-
- // Validate the mSurface's mNativeSurface field
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (NULL == previewSurface.get()),
- "mNativeSurface is null");
-
- frameStr.pBuffer = M4OSA_NULL;
- frameStr.timeMs = 0;
- frameStr.uiSurfaceWidth = width;
- frameStr.uiSurfaceHeight = height;
- frameStr.uiFrameWidth = width;
- frameStr.uiFrameHeight = height;
- frameStr.bApplyEffect = M4OSA_FALSE;
- frameStr.clipBeginCutTime = 0;
- frameStr.clipEndCutTime = 0;
-
- result = pContext->mPreviewController->clearSurface(previewSurface,
- &frameStr);
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- (M4NO_ERROR != result), result);
-
- }
-
-static jint videoEditor_renderPreviewFrame(JNIEnv* pEnv,
- jobject thiz,
- jobject mSurface,
- jlong fromMs,
- jint surfaceWidth,
- jint surfaceHeight )
-{
- bool needToBeLoaded = true;
- M4OSA_ERR result = M4NO_ERROR;
- M4OSA_UInt32 timeMs = (M4OSA_UInt32)fromMs;
- M4OSA_UInt32 i=0,tnTimeMs = 0, framesizeYuv =0;
- M4VIFI_UInt8 *pixelArray = M4OSA_NULL;
- M4OSA_UInt32 iCurrentClipIndex = 0, uiNumberOfClipsInStoryBoard =0,
- uiClipDuration = 0, uiTotalClipDuration = 0,
- iIncrementedDuration = 0;
- VideoEditor_renderPreviewFrameStr frameStr;
- M4OSA_Context tnContext = M4OSA_NULL;
- const char* pMessage = NULL;
- M4VIFI_ImagePlane *yuvPlane = NULL;
- VideoEditorCurretEditInfo currEditInfo;
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO,
- "VIDEO_EDITOR", "surfaceWidth = %d",surfaceWidth);
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO,
- "VIDEO_EDITOR", "surfaceHeight = %d",surfaceHeight);
- ManualEditContext* pContext = M4OSA_NULL;
- // Get the context.
- pContext =
- (ManualEditContext*)videoEditClasses_getContext(&needToBeLoaded, pEnv, thiz);
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO,
- "VIDEO_EDITOR","pContext = 0x%x",pContext);
-
- // Make sure that the context was set.
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == pContext),
- "not initialized");
-
- // Make sure that the context was set.
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == pContext->mPreviewController),
- "not initialized");
-
- // Validate the mSurface parameter.
- videoEditJava_checkAndThrowIllegalArgumentException(&needToBeLoaded, pEnv,
- (NULL == mSurface),
- "mSurface is null");
-
- sp<Surface> previewSurface = android_view_Surface_getSurface(pEnv, mSurface);
-
- // Validate the mSurface's mNativeSurface field
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (NULL == previewSurface.get()),
- "mNativeSurface is null");
-
- /* Determine the total number of clips, total duration*/
- uiNumberOfClipsInStoryBoard = pContext->pEditSettings->uiClipNumber;
-
- for (i = 0; i < uiNumberOfClipsInStoryBoard; i++) {
- uiClipDuration = pContext->pEditSettings->pClipList[i]->uiEndCutTime -
- pContext->pEditSettings->pClipList[i]->uiBeginCutTime;
- uiTotalClipDuration += uiClipDuration;
- }
-
- /* determine the clip whose thumbnail needs to be rendered*/
- if (timeMs == 0) {
- iCurrentClipIndex = 0;
- i=0;
- } else {
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "videoEditor_renderPreviewFrame() timeMs=%d", timeMs);
-
- if (timeMs > uiTotalClipDuration) {
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "videoEditor_renderPreviewFrame() timeMs > uiTotalClipDuration");
- pMessage = videoEditJava_getErrorName(M4ERR_PARAMETER);
- jniThrowException(pEnv, "java/lang/IllegalArgumentException", pMessage);
- return -1;
- }
-
- for (i = 0; i < uiNumberOfClipsInStoryBoard; i++) {
- if (timeMs <= (iIncrementedDuration +
- (pContext->pEditSettings->pClipList[i]->uiEndCutTime -
- pContext->pEditSettings->pClipList[i]->uiBeginCutTime)))
- {
- iCurrentClipIndex = i;
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "videoEditor_renderPreviewFrame() iCurrentClipIndex=%d for timeMs=%d",
- iCurrentClipIndex, timeMs);
- break;
- }
- else {
- iIncrementedDuration = iIncrementedDuration +
- (pContext->pEditSettings->pClipList[i]->uiEndCutTime -
- pContext->pEditSettings->pClipList[i]->uiBeginCutTime);
- }
- }
- }
- /* If timestamp is beyond story board duration, return*/
- if (i >= uiNumberOfClipsInStoryBoard) {
- if (timeMs == iIncrementedDuration) {
- iCurrentClipIndex = i-1;
- } else {
- return -1;
- }
- }
-
- /*+ Handle the image files here */
- if (pContext->pEditSettings->pClipList[iCurrentClipIndex]->FileType ==
- /*M4VIDEOEDITING_kFileType_JPG*/ M4VIDEOEDITING_kFileType_ARGB8888 ) {
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", " iCurrentClipIndex %d ", iCurrentClipIndex);
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- " Height = %d",
- pContext->pEditSettings->pClipList[iCurrentClipIndex]->ClipProperties.uiVideoHeight);
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- " Width = %d",
- pContext->pEditSettings->pClipList[iCurrentClipIndex]->ClipProperties.uiVideoWidth);
-
- LvGetImageThumbNail((const char *)pContext->pEditSettings->\
- pClipList[iCurrentClipIndex]->pFile,
- pContext->pEditSettings->pClipList[iCurrentClipIndex]->ClipProperties.uiVideoHeight,
- pContext->pEditSettings->pClipList[iCurrentClipIndex]->ClipProperties.uiVideoWidth,
- (M4OSA_Void **)&frameStr.pBuffer);
- tnTimeMs = (M4OSA_UInt32)timeMs;
-
- frameStr.videoRotationDegree = 0;
- } else {
- /* Handle 3gp/mp4 Clips here */
- /* get thumbnail*/
- result = ThumbnailOpen(&tnContext,
- (const M4OSA_Char*)pContext->pEditSettings->\
- pClipList[iCurrentClipIndex]->pFile, M4OSA_TRUE);
- if (result != M4NO_ERROR || tnContext == M4OSA_NULL) {
- return -1;
- }
-
- /* timeMs is relative to storyboard; in this api it shud be relative to this clip */
- if ((i >= uiNumberOfClipsInStoryBoard) &&
- (timeMs == iIncrementedDuration)) {
- tnTimeMs = pContext->pEditSettings->\
- pClipList[iCurrentClipIndex]->uiEndCutTime;
- } else {
- tnTimeMs = pContext->pEditSettings->\
- pClipList[iCurrentClipIndex]->uiBeginCutTime
- + (timeMs - iIncrementedDuration);
- }
-
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "video width = %d",pContext->pEditSettings->pClipList[iCurrentClipIndex]->\
- ClipProperties.uiVideoWidth);
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "video height = %d",pContext->pEditSettings->pClipList[iCurrentClipIndex]->\
- ClipProperties.uiVideoHeight);
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "current clip index = %d",iCurrentClipIndex);
-
- M4OSA_UInt32 width = pContext->pEditSettings->pClipList[iCurrentClipIndex]->\
- ClipProperties.uiVideoWidth;
- M4OSA_UInt32 height = pContext->pEditSettings->pClipList[iCurrentClipIndex]->\
- ClipProperties.uiVideoHeight;
-
- framesizeYuv = width * height * 1.5;
-
- pixelArray = (M4VIFI_UInt8 *)M4OSA_32bitAlignedMalloc(framesizeYuv, M4VS,
- (M4OSA_Char*)"videoEditor pixelArray");
- if (pixelArray == M4OSA_NULL) {
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "videoEditor_renderPreviewFrame() malloc error");
- ThumbnailClose(tnContext);
- pMessage = videoEditJava_getErrorName(M4ERR_ALLOC);
- jniThrowException(pEnv, "java/lang/RuntimeException", pMessage);
- return -1;
- }
-
- result = ThumbnailGetPixels16(tnContext, (M4OSA_Int16 *)pixelArray,
- pContext->pEditSettings->pClipList[iCurrentClipIndex]->\
- ClipProperties.uiVideoWidth,
- pContext->pEditSettings->pClipList[iCurrentClipIndex]->\
- ClipProperties.uiVideoHeight,
- &tnTimeMs, 0);
- if (result != M4NO_ERROR) {
- free(pixelArray);
- ThumbnailClose(tnContext);
- return -1;
- }
-
- ThumbnailClose(tnContext);
- tnContext = M4OSA_NULL;
-
-#ifdef DUMPTOFILE
- {
- M4OSA_Context fileContext;
- M4OSA_Char* fileName = (M4OSA_Char*)"/mnt/sdcard/FirstRGB565.raw";
- remove((const char *)fileName);
- M4OSA_fileWriteOpen(&fileContext, (M4OSA_Void*) fileName,\
- M4OSA_kFileWrite|M4OSA_kFileCreate);
- M4OSA_fileWriteData(fileContext, (M4OSA_MemAddr8) pixelArray,
- framesizeYuv);
- M4OSA_fileWriteClose(fileContext);
- }
-#endif
-
- /**
- * Allocate output YUV planes
- */
- yuvPlane = (M4VIFI_ImagePlane*)M4OSA_32bitAlignedMalloc(3*sizeof(M4VIFI_ImagePlane), M4VS,
- (M4OSA_Char*)"videoEditor_renderPreviewFrame Output plane YUV");
- if (yuvPlane == M4OSA_NULL) {
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "videoEditor_renderPreviewFrame() malloc error for yuv plane");
- free(pixelArray);
- pMessage = videoEditJava_getErrorName(M4ERR_ALLOC);
- jniThrowException(pEnv, "java/lang/RuntimeException", pMessage);
- return -1;
- }
-
- yuvPlane[0].u_width = width;
- yuvPlane[0].u_height = height;
- yuvPlane[0].u_topleft = 0;
- yuvPlane[0].u_stride = width;
- yuvPlane[0].pac_data = (M4VIFI_UInt8*)pixelArray;
-
- yuvPlane[1].u_width = width>>1;
- yuvPlane[1].u_height = height>>1;
- yuvPlane[1].u_topleft = 0;
- yuvPlane[1].u_stride = width>>1;
- yuvPlane[1].pac_data = yuvPlane[0].pac_data
- + yuvPlane[0].u_width * yuvPlane[0].u_height;
- yuvPlane[2].u_width = (width)>>1;
- yuvPlane[2].u_height = (height)>>1;
- yuvPlane[2].u_topleft = 0;
- yuvPlane[2].u_stride = (width)>>1;
- yuvPlane[2].pac_data = yuvPlane[1].pac_data
- + yuvPlane[1].u_width * yuvPlane[1].u_height;
-
-#ifdef DUMPTOFILE
- {
- M4OSA_Context fileContext;
- M4OSA_Char* fileName = (M4OSA_Char*)"/mnt/sdcard/ConvertedYuv.yuv";
- remove((const char *)fileName);
- M4OSA_fileWriteOpen(&fileContext, (M4OSA_Void*) fileName,\
- M4OSA_kFileWrite|M4OSA_kFileCreate);
- M4OSA_fileWriteData(fileContext,
- (M4OSA_MemAddr8) yuvPlane[0].pac_data, framesizeYuv);
- M4OSA_fileWriteClose(fileContext);
- }
-#endif
-
- /* Fill up the render structure*/
- frameStr.pBuffer = (M4OSA_Void*)yuvPlane[0].pac_data;
-
- frameStr.videoRotationDegree = pContext->pEditSettings->\
- pClipList[iCurrentClipIndex]->ClipProperties.videoRotationDegrees;
- }
-
- frameStr.timeMs = timeMs; /* timestamp on storyboard*/
- frameStr.uiSurfaceWidth =
- pContext->pEditSettings->pClipList[iCurrentClipIndex]->\
- ClipProperties.uiVideoWidth;
- frameStr.uiSurfaceHeight =
- pContext->pEditSettings->pClipList[iCurrentClipIndex]->\
- ClipProperties.uiVideoHeight;
- frameStr.uiFrameWidth =
- pContext->pEditSettings->pClipList[iCurrentClipIndex]->\
- ClipProperties.uiVideoWidth;
- frameStr.uiFrameHeight =
- pContext->pEditSettings->pClipList[iCurrentClipIndex]->\
- ClipProperties.uiVideoHeight;
- if (pContext->pEditSettings->nbEffects > 0) {
- frameStr.bApplyEffect = M4OSA_TRUE;
- } else {
- frameStr.bApplyEffect = M4OSA_FALSE;
- }
- frameStr.clipBeginCutTime = iIncrementedDuration;
- frameStr.clipEndCutTime =
- iIncrementedDuration +
- (pContext->pEditSettings->pClipList[iCurrentClipIndex]->uiEndCutTime -\
- pContext->pEditSettings->pClipList[iCurrentClipIndex]->uiBeginCutTime);
-
- pContext->mPreviewController->setPreviewFrameRenderingMode(
- pContext->pEditSettings->\
- pClipList[iCurrentClipIndex]->xVSS.MediaRendering,
- pContext->pEditSettings->xVSS.outputVideoSize);
- result = pContext->mPreviewController->renderPreviewFrame(previewSurface,
- &frameStr, &currEditInfo);
-
- if (currEditInfo.overlaySettingsIndex != -1) {
- char tmpOverlayFilename[100];
- char *extPos = NULL;
- jstring tmpOverlayString;
- int tmpRenderingMode = 0;
-
- strncpy (tmpOverlayFilename,
- (const char*)pContext->pEditSettings->Effects[currEditInfo.overlaySettingsIndex].xVSS.pFramingFilePath, 99);
-
- //Change the name to png file
- extPos = strstr(tmpOverlayFilename, ".rgb");
- if (extPos != NULL) {
- *extPos = '\0';
- } else {
- ALOGE("ERROR the overlay file is incorrect");
- }
-
- strcat(tmpOverlayFilename, ".png");
-
- tmpRenderingMode = pContext->pEditSettings->pClipList[iCurrentClipIndex]->xVSS.MediaRendering;
- tmpOverlayString = pEnv->NewStringUTF(tmpOverlayFilename);
- pEnv->CallVoidMethod(pContext->engine,
- pContext->previewFrameEditInfoId,
- tmpOverlayString, tmpRenderingMode);
-
- }
-
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- (M4NO_ERROR != result), result);
-
- free(frameStr.pBuffer);
- if (pContext->pEditSettings->pClipList[iCurrentClipIndex]->FileType !=
- M4VIDEOEDITING_kFileType_ARGB8888) {
- free(yuvPlane);
- }
-
- return (jint)tnTimeMs;
-}
-
-static jint videoEditor_renderMediaItemPreviewFrame(JNIEnv* pEnv,
- jobject thiz,
- jobject mSurface,
- jstring filePath,
- jint frameWidth,
- jint frameHeight,
- jint surfaceWidth,
- jint surfaceHeight,
- jlong fromMs)
-{
- bool needToBeLoaded = true;
- M4OSA_ERR result = M4NO_ERROR;
- M4OSA_UInt32 timeMs = (M4OSA_UInt32)fromMs;
- M4OSA_UInt32 framesizeYuv =0;
- M4VIFI_UInt8 *pixelArray = M4OSA_NULL;
- VideoEditor_renderPreviewFrameStr frameStr;
- M4OSA_Context tnContext = M4OSA_NULL;
- const char* pMessage = NULL;
- M4VIFI_ImagePlane yuvPlane[3], rgbPlane;
-
- ManualEditContext* pContext = M4OSA_NULL;
- // Get the context.
- pContext =
- (ManualEditContext*)videoEditClasses_getContext(&needToBeLoaded,
- pEnv, thiz);
-
- // Make sure that the context was set.
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == pContext),
- "not initialized");
-
- // Make sure that the context was set.
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == pContext->mPreviewController),
- "not initialized");
-
- // Validate the mSurface parameter.
- videoEditJava_checkAndThrowIllegalArgumentException(&needToBeLoaded, pEnv,
- (NULL == mSurface),
- "mSurface is null");
-
- sp<Surface> previewSurface = android_view_Surface_getSurface(pEnv, mSurface);
-
- const char *pString = pEnv->GetStringUTFChars(filePath, NULL);
- if (pString == M4OSA_NULL) {
- if (pEnv != NULL) {
- jniThrowException(pEnv, "java/lang/RuntimeException", "Input string null");
- }
- }
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "videoEditor_renderMediaItemPreviewFrame() timeMs=%d", timeMs);
- /* get thumbnail*/
- result = ThumbnailOpen(&tnContext,(const M4OSA_Char*)pString, M4OSA_TRUE);
- if (result != M4NO_ERROR || tnContext == M4OSA_NULL) {
- return (jint)timeMs;
- }
-
- framesizeYuv = ((frameWidth)*(frameHeight)*1.5);
-
- pixelArray = (M4VIFI_UInt8 *)M4OSA_32bitAlignedMalloc(framesizeYuv, M4VS,\
- (M4OSA_Char*)"videoEditor pixelArray");
- if (pixelArray == M4OSA_NULL) {
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "videoEditor_renderPreviewFrame() malloc error");
- ThumbnailClose(tnContext);
- pMessage = videoEditJava_getErrorName(M4ERR_ALLOC);
- jniThrowException(pEnv, "java/lang/RuntimeException", pMessage);
- return (jint)timeMs;
- }
-
- result = ThumbnailGetPixels16(tnContext, (M4OSA_Int16 *)pixelArray,
- frameWidth,
- frameHeight, &timeMs, 0);
- if (result != M4NO_ERROR) {
- free(pixelArray);
- ThumbnailClose(tnContext);
- return (jint)fromMs;
- }
-
-#ifdef DUMPTOFILESYSTEM
- {
- M4OSA_Context fileContext;
- M4OSA_Char* fileName = (M4OSA_Char*)"/mnt/sdcard/FirstRGB565.rgb";
- M4OSA_fileWriteOpen(&fileContext, (M4OSA_Void*) fileName,\
- M4OSA_kFileWrite|M4OSA_kFileCreate);
- M4OSA_fileWriteData(fileContext, (M4OSA_MemAddr8) pixelArray,
- framesizeRgb);
- M4OSA_fileWriteClose(fileContext);
- }
-#endif
-
- yuvPlane[0].pac_data = (M4VIFI_UInt8*)pixelArray;
- yuvPlane[0].u_height = frameHeight;
- yuvPlane[0].u_width = frameWidth;
- yuvPlane[0].u_stride = yuvPlane[0].u_width;
- yuvPlane[0].u_topleft = 0;
-
- yuvPlane[1].u_height = frameHeight/2;
- yuvPlane[1].u_width = frameWidth/2;
- yuvPlane[1].u_stride = yuvPlane[1].u_width;
- yuvPlane[1].u_topleft = 0;
- yuvPlane[1].pac_data = yuvPlane[0].pac_data
- + yuvPlane[0].u_width*yuvPlane[0].u_height;
-
- yuvPlane[2].u_height = frameHeight/2;
- yuvPlane[2].u_width = frameWidth/2;
- yuvPlane[2].u_stride = yuvPlane[2].u_width;
- yuvPlane[2].u_topleft = 0;
- yuvPlane[2].pac_data = yuvPlane[0].pac_data
- + yuvPlane[0].u_width*yuvPlane[0].u_height + \
- (yuvPlane[0].u_width/2)*(yuvPlane[0].u_height/2);
-#ifdef DUMPTOFILESYSTEM
- {
- M4OSA_Context fileContext;
- M4OSA_Char* fileName = (M4OSA_Char*)"/mnt/sdcard/ConvertedYuv.yuv";
- M4OSA_fileWriteOpen(&fileContext, (M4OSA_Void*) fileName,\
- M4OSA_kFileWrite|M4OSA_kFileCreate);
- M4OSA_fileWriteData(fileContext, (M4OSA_MemAddr8) yuvPlane[0].pac_data,
- framesizeYuv);
- M4OSA_fileWriteClose(fileContext);
- }
-#endif
-
- /* Fill up the render structure*/
- frameStr.pBuffer = (M4OSA_Void*)yuvPlane[0].pac_data;
- frameStr.timeMs = timeMs; /* timestamp on storyboard*/
- frameStr.uiSurfaceWidth = frameWidth;
- frameStr.uiSurfaceHeight = frameHeight;
- frameStr.uiFrameWidth = frameWidth;
- frameStr.uiFrameHeight = frameHeight;
- frameStr.bApplyEffect = M4OSA_FALSE;
- // clip begin cuttime and end cuttime set to 0
- // as its only required when effect needs to be applied while rendering
- frameStr.clipBeginCutTime = 0;
- frameStr.clipEndCutTime = 0;
-
- /* pContext->mPreviewController->setPreviewFrameRenderingMode(M4xVSS_kBlackBorders,
- (M4VIDEOEDITING_VideoFrameSize)(M4VIDEOEDITING_kHD960+1));*/
- result
- = pContext->mPreviewController->renderPreviewFrame(previewSurface,&frameStr, NULL);
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- (M4NO_ERROR != result), result);
-
- /* free the pixelArray and yuvPlane[0].pac_data */
- free(yuvPlane[0].pac_data);
-
- ThumbnailClose(tnContext);
-
- if (pString != NULL) {
- pEnv->ReleaseStringUTFChars(filePath, pString);
- }
-
- return (jint)timeMs;
-}
-
-jint videoEditor_generateAudioRawFile( JNIEnv* pEnv,
- jobject thiz,
- jstring infilePath,
- jstring pcmfilePath)
-{
- M4OSA_ERR result = M4NO_ERROR;
- bool loaded = true;
- ManualEditContext* pContext = M4OSA_NULL;
-
-
-
- const char *pInputFile = pEnv->GetStringUTFChars(infilePath, NULL);
- if (pInputFile == M4OSA_NULL) {
- if (pEnv != NULL) {
- jniThrowException(pEnv, "java/lang/RuntimeException", "Input string null");
- }
- }
-
- const char *pStringOutPCMFilePath = pEnv->GetStringUTFChars(pcmfilePath, NULL);
- if (pStringOutPCMFilePath == M4OSA_NULL) {
- if (pEnv != NULL) {
- jniThrowException(pEnv, "java/lang/RuntimeException", "Input string null");
- }
- }
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO,
- "VIDEO_EDITOR", "videoEditor_generateAudioRawFile infilePath %s",
- pInputFile);
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO,
- "VIDEO_EDITOR", "videoEditor_generateAudioRawFile pcmfilePath %s",
- pStringOutPCMFilePath);
- // Get the context.
- pContext = (ManualEditContext*)videoEditClasses_getContext(&loaded, pEnv, thiz);
-
- result = videoEditor_generateAudio( pEnv, pContext, (M4OSA_Char*)pInputFile,
- (M4OSA_Char*)pStringOutPCMFilePath);
-
- if (pInputFile != NULL) {
- pEnv->ReleaseStringUTFChars(infilePath, pInputFile);
- }
- if (pStringOutPCMFilePath != NULL) {
- pEnv->ReleaseStringUTFChars(pcmfilePath, pStringOutPCMFilePath);
- }
-
- return (jint)result;
-}
-
-M4OSA_ERR videoEditor_generateAudio(JNIEnv* pEnv,ManualEditContext* pContext,
- M4OSA_Char* infilePath,
- M4OSA_Char* pcmfilePath )
-{
- bool needToBeLoaded = true;
- M4OSA_ERR result = M4NO_ERROR;
- M4MCS_Context mcsContext = M4OSA_NULL;
- M4OSA_Char* pInputFile = M4OSA_NULL;
- M4OSA_Char* pOutputFile = M4OSA_NULL;
- M4OSA_Char* pTempPath = M4OSA_NULL;
- M4MCS_OutputParams* pOutputParams = M4OSA_NULL;
- M4MCS_EncodingParams* pEncodingParams = M4OSA_NULL;
- M4OSA_Int32 pInputFileType = 0;
- M4OSA_UInt8 threadProgress = 0;
- M4OSA_Char* pTemp3gpFilePath = M4OSA_NULL;
-
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR", "videoEditor_generateAudio()");
-
- videoEditJava_checkAndThrowIllegalArgumentException(&needToBeLoaded, pEnv,
- (NULL == pContext),
- "ManualEditContext is null");
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "M4MCS_init()");
-
- pOutputParams = (M4MCS_OutputParams *)M4OSA_32bitAlignedMalloc(
- sizeof(M4MCS_OutputParams),0x00,
- (M4OSA_Char *)"M4MCS_OutputParams");
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == pOutputParams),
- "not initialized");
- if (needToBeLoaded == false) {
- return M4ERR_ALLOC;
- }
-
- pEncodingParams = (M4MCS_EncodingParams *)M4OSA_32bitAlignedMalloc(
- sizeof(M4MCS_EncodingParams),0x00,
- (M4OSA_Char *)"M4MCS_EncodingParams");
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == pEncodingParams),
- "not initialized");
- if (needToBeLoaded == false) {
- free(pEncodingParams);
- pEncodingParams = M4OSA_NULL;
- return M4ERR_ALLOC;
- }
-
- // Initialize the MCS library.
- result = M4MCS_init(&mcsContext, pContext->initParams.pFileReadPtr,
- pContext->initParams.pFileWritePtr);
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,\
- (M4NO_ERROR != result), result);
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == mcsContext),
- "not initialized");
- if(needToBeLoaded == false) {
- free(pOutputParams);
- pOutputParams = M4OSA_NULL;
- free(pEncodingParams);
- pEncodingParams = M4OSA_NULL;
- return result;
- }
-
- // generate the path for temp 3gp output file
- pTemp3gpFilePath = (M4OSA_Char*) M4OSA_32bitAlignedMalloc (
- (strlen((const char*)pContext->initParams.pTempPath)
- + strlen((const char*)TEMP_MCS_OUT_FILE_PATH)) + 1 /* for null termination */ , 0x0,
- (M4OSA_Char*)"Malloc for temp 3gp file");
- if (pTemp3gpFilePath != M4OSA_NULL)
- {
- memset((void *)pTemp3gpFilePath ,0,
- strlen((const char*)pContext->initParams.pTempPath)
- + strlen((const char*)TEMP_MCS_OUT_FILE_PATH) + 1);
- strncat((char *)pTemp3gpFilePath,
- (const char *)pContext->initParams.pTempPath ,
- (size_t) ((M4OSA_Char*)pContext->initParams.pTempPath));
- strncat((char *)pTemp3gpFilePath , (const char *)TEMP_MCS_OUT_FILE_PATH,
- (size_t)strlen ((const char*)TEMP_MCS_OUT_FILE_PATH));
- }
- else {
- M4MCS_abort(mcsContext);
- free(pOutputParams);
- pOutputParams = M4OSA_NULL;
- free(pEncodingParams);
- pEncodingParams = M4OSA_NULL;
- return M4ERR_ALLOC;
- }
-
- pInputFile = (M4OSA_Char *) infilePath; //pContext->mAudioSettings->pFile;
- //Delete this file later
- pOutputFile = (M4OSA_Char *) pTemp3gpFilePath;
- // Temp folder path for VSS use = ProjectPath
- pTempPath = (M4OSA_Char *) pContext->initParams.pTempPath;
- pInputFileType = (M4VIDEOEDITING_FileType)pContext->mAudioSettings->fileType;
-
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR", "TEMP_MCS_OUT_FILE_PATH len %d",
- strlen ((const char*)TEMP_MCS_OUT_FILE_PATH));
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR", "pTemp3gpFilePath %s",
- pOutputFile);
-
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR", "M4MCS_open()");
-
- result = M4MCS_open(mcsContext, pInputFile,
- (M4VIDEOEDITING_FileType)pInputFileType,
- pOutputFile, pTempPath);
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- (M4NO_ERROR != result), result);
- if(needToBeLoaded == false) {
- free(pTemp3gpFilePath);
- pTemp3gpFilePath = M4OSA_NULL;
- M4MCS_abort(mcsContext);
- free(pOutputParams);
- pOutputParams = M4OSA_NULL;
- free(pEncodingParams);
- pEncodingParams = M4OSA_NULL;
- return result;
- }
-
- pOutputParams->OutputFileType
- = (M4VIDEOEDITING_FileType)M4VIDEOEDITING_kFileType_3GPP;
- // Set the video format.
- pOutputParams->OutputVideoFormat =
- (M4VIDEOEDITING_VideoFormat)M4VIDEOEDITING_kNoneVideo;//M4VIDEOEDITING_kNoneVideo;
- pOutputParams->outputVideoProfile = 1;
- pOutputParams->outputVideoLevel = 1;
- // Set the frame size.
- pOutputParams->OutputVideoFrameSize
- = (M4VIDEOEDITING_VideoFrameSize)M4VIDEOEDITING_kQCIF;
- // Set the frame rate.
- pOutputParams->OutputVideoFrameRate
- = (M4VIDEOEDITING_VideoFramerate)M4VIDEOEDITING_k5_FPS;
-
- // Set the audio format.
- pOutputParams->OutputAudioFormat
- = (M4VIDEOEDITING_AudioFormat)M4VIDEOEDITING_kAAC;
- // Set the audio sampling frequency.
- pOutputParams->OutputAudioSamplingFrequency =
- (M4VIDEOEDITING_AudioSamplingFrequency)M4VIDEOEDITING_k32000_ASF;
- // Set the audio mono.
- pOutputParams->bAudioMono = false;
- // Set the pcm file; null for now.
- pOutputParams->pOutputPCMfile = (M4OSA_Char *)pcmfilePath;
- //(M4OSA_Char *)"/sdcard/Output/AudioPcm.pcm";
- // Set the audio sampling frequency.
- pOutputParams->MediaRendering = (M4MCS_MediaRendering)M4MCS_kCropping;
- // new params after integrating MCS 2.0
- // Set the number of audio effects; 0 for now.
- pOutputParams->nbEffects = 0;
- // Set the audio effect; null for now.
- pOutputParams->pEffects = NULL;
- // Set the audio effect; null for now.
- pOutputParams->bDiscardExif = M4OSA_FALSE;
- // Set the audio effect; null for now.
- pOutputParams->bAdjustOrientation = M4OSA_FALSE;
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "M4MCS_setOutputParams()");
- result = M4MCS_setOutputParams(mcsContext, pOutputParams);
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- (M4NO_ERROR != result), result);
- if (needToBeLoaded == false) {
- free(pTemp3gpFilePath);
- pTemp3gpFilePath = M4OSA_NULL;
- M4MCS_abort(mcsContext);
- free(pOutputParams);
- pOutputParams = M4OSA_NULL;
- free(pEncodingParams);
- pEncodingParams = M4OSA_NULL;
- return result;
- }
- // Set the video bitrate.
- pEncodingParams->OutputVideoBitrate =
- (M4VIDEOEDITING_Bitrate)M4VIDEOEDITING_kUndefinedBitrate;
- // Set the audio bitrate.
- pEncodingParams->OutputAudioBitrate
- = (M4VIDEOEDITING_Bitrate)M4VIDEOEDITING_k128_KBPS;
- // Set the end cut time in milliseconds.
- pEncodingParams->BeginCutTime = 0;
- // Set the end cut time in milliseconds.
- pEncodingParams->EndCutTime = 0;
- // Set the output file size in bytes.
- pEncodingParams->OutputFileSize = 0;
- // Set video time scale.
- pEncodingParams->OutputVideoTimescale = 0;
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "M4MCS_setEncodingParams()");
- result = M4MCS_setEncodingParams(mcsContext, pEncodingParams);
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- (M4NO_ERROR != result), result);
- if (needToBeLoaded == false) {
- free(pTemp3gpFilePath);
- pTemp3gpFilePath = M4OSA_NULL;
- M4MCS_abort(mcsContext);
- free(pOutputParams);
- pOutputParams = M4OSA_NULL;
- free(pEncodingParams);
- pEncodingParams = M4OSA_NULL;
- return result;
- }
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "M4MCS_checkParamsAndStart()");
- result = M4MCS_checkParamsAndStart(mcsContext);
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- (M4NO_ERROR != result), result);
- if (needToBeLoaded == false) {
- free(pTemp3gpFilePath);
- pTemp3gpFilePath = M4OSA_NULL;
- M4MCS_abort(mcsContext);
- free(pOutputParams);
- pOutputParams = M4OSA_NULL;
- free(pEncodingParams);
- pEncodingParams = M4OSA_NULL;
- return result;
- }
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "M4MCS_step()");
-
- /*+ PROGRESS CB */
- M4OSA_UInt8 curProgress = 0;
- int lastProgress = 0;
-
- ALOGV("LVME_generateAudio Current progress is =%d", curProgress);
- pEnv->CallVoidMethod(pContext->engine,
- pContext->onProgressUpdateMethodId, 1/*task status*/,
- curProgress/*progress*/);
- do {
- result = M4MCS_step(mcsContext, &curProgress);
-
- if (result != M4NO_ERROR) {
- ALOGV("LVME_generateAudio M4MCS_step returned 0x%x",result);
-
- if (result == M4MCS_WAR_TRANSCODING_DONE) {
- ALOGV("LVME_generateAudio MCS process ended");
-
- // Send a progress notification.
- curProgress = 100;
- pEnv->CallVoidMethod(pContext->engine,
- pContext->onProgressUpdateMethodId, 1/*task status*/,
- curProgress);
- ALOGV("LVME_generateAudio Current progress is =%d", curProgress);
- }
- } else {
- // Send a progress notification if needed
- if (curProgress != lastProgress) {
- lastProgress = curProgress;
- pEnv->CallVoidMethod(pContext->engine,
- pContext->onProgressUpdateMethodId, 0/*task status*/,
- curProgress/*progress*/);
- ALOGV("LVME_generateAudio Current progress is =%d",curProgress);
- }
- }
- } while (result == M4NO_ERROR);
- /*- PROGRESS CB */
-
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- (M4MCS_WAR_TRANSCODING_DONE != result), result);
- if (needToBeLoaded == false) {
- free(pTemp3gpFilePath);
- pTemp3gpFilePath = M4OSA_NULL;
- M4MCS_abort(mcsContext);
- free(pOutputParams);
- pOutputParams = M4OSA_NULL;
- free(pEncodingParams);
- pEncodingParams = M4OSA_NULL;
- return result;
- }
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "M4MCS_abort()");
- result = M4MCS_abort(mcsContext);
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- (M4NO_ERROR != result), result);
-
- //pContext->mAudioSettings->pFile = pOutputParams->pOutputPCMfile;
- remove((const char *) pTemp3gpFilePath);
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "videoEditor_generateAudio() EXIT ");
-
- if (pTemp3gpFilePath != M4OSA_NULL) {
- free(pTemp3gpFilePath);
- }
- if (pOutputParams != M4OSA_NULL) {
- free(pOutputParams);
- }
- if(pEncodingParams != M4OSA_NULL) {
- free(pEncodingParams);
- }
- return result;
-}
-
-static int removeAlphafromRGB8888 (
- M4OSA_Char* pFramingFilePath,
- M4xVSS_FramingStruct *pFramingCtx)
-{
- M4OSA_UInt32 frameSize_argb = (pFramingCtx->width * pFramingCtx->height * 4); // aRGB data
- M4OSA_Context lImageFileFp = M4OSA_NULL;
- M4OSA_ERR err = M4NO_ERROR;
-
- ALOGV("removeAlphafromRGB8888: width %d", pFramingCtx->width);
-
- M4OSA_UInt8 *pTmpData = (M4OSA_UInt8*) M4OSA_32bitAlignedMalloc(frameSize_argb, M4VS, (M4OSA_Char*)"Image argb data");
- if (pTmpData == M4OSA_NULL) {
- ALOGE("Failed to allocate memory for Image clip");
- return M4ERR_ALLOC;
- }
-
- /** Read the argb data from the passed file. */
- M4OSA_ERR lerr = M4OSA_fileReadOpen(&lImageFileFp, (M4OSA_Void *) pFramingFilePath, M4OSA_kFileRead);
-
-
- if ((lerr != M4NO_ERROR) || (lImageFileFp == M4OSA_NULL))
- {
- ALOGE("removeAlphafromRGB8888: Can not open the file ");
- free(pTmpData);
- return M4ERR_FILE_NOT_FOUND;
- }
-
-
- lerr = M4OSA_fileReadData(lImageFileFp, (M4OSA_MemAddr8)pTmpData, &frameSize_argb);
- if (lerr != M4NO_ERROR)
- {
- ALOGE("removeAlphafromRGB8888: can not read the data ");
- M4OSA_fileReadClose(lImageFileFp);
- free(pTmpData);
- return lerr;
- }
- M4OSA_fileReadClose(lImageFileFp);
-
- M4OSA_UInt32 frameSize = (pFramingCtx->width * pFramingCtx->height * 3); //Size of RGB 888 data.
-
- pFramingCtx->FramingRgb = (M4VIFI_ImagePlane*)M4OSA_32bitAlignedMalloc(
- sizeof(M4VIFI_ImagePlane), M4VS, (M4OSA_Char*)"Image clip RGB888 data");
- pFramingCtx->FramingRgb->pac_data = (M4VIFI_UInt8*)M4OSA_32bitAlignedMalloc(
- frameSize, M4VS, (M4OSA_Char*)"Image clip RGB888 data");
-
- if (pFramingCtx->FramingRgb == M4OSA_NULL)
- {
- ALOGE("Failed to allocate memory for Image clip");
- free(pTmpData);
- return M4ERR_ALLOC;
- }
-
- /** Remove the alpha channel */
- for (size_t i = 0, j = 0; i < frameSize_argb; i++) {
- if ((i % 4) == 0) continue;
- pFramingCtx->FramingRgb->pac_data[j] = pTmpData[i];
- j++;
- }
- free(pTmpData);
- return M4NO_ERROR;
-}
-
-static void
-videoEditor_populateSettings(
- JNIEnv* pEnv,
- jobject thiz,
- jobject settings,
- jobject object,
- jobject audioSettingObject)
-{
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "videoEditor_populateSettings()");
-
- bool needToBeLoaded = true;
- ManualEditContext* pContext = M4OSA_NULL;
- M4OSA_ERR result = M4NO_ERROR;
- jstring strPath = M4OSA_NULL;
- jstring strPCMPath = M4OSA_NULL;
- jobjectArray propertiesClipsArray = M4OSA_NULL;
- jobject properties = M4OSA_NULL;
- jint* bitmapArray = M4OSA_NULL;
- jobjectArray effectSettingsArray = M4OSA_NULL;
- jobject effectSettings = M4OSA_NULL;
- jintArray pixelArray = M4OSA_NULL;
- int width = 0;
- int height = 0;
- int nbOverlays = 0;
- int i,j = 0;
- int *pOverlayIndex = M4OSA_NULL;
- M4OSA_Char* pTempChar = M4OSA_NULL;
-
- // Validate the settings parameter.
- videoEditJava_checkAndThrowIllegalArgumentException(&needToBeLoaded, pEnv,
- (NULL == settings),
- "settings is null");
- // Get the context.
- pContext =
- (ManualEditContext*)videoEditClasses_getContext(&needToBeLoaded, pEnv, thiz);
-
- // Make sure that the context was set.
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == pContext),
- "not initialized");
- // Make sure that the context was set.
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == pContext->mPreviewController),
- "not initialized");
- jclass mPreviewClipPropClazz = pEnv->FindClass(PREVIEW_PROPERTIES_CLASS_NAME);
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == mPreviewClipPropClazz),
- "not initialized");
-
- jfieldID fid = pEnv->GetFieldID(mPreviewClipPropClazz,"clipProperties",
- "[L"PROPERTIES_CLASS_NAME";" );
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == fid),
- "not initialized");
-
- propertiesClipsArray = (jobjectArray)pEnv->GetObjectField(object, fid);
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == propertiesClipsArray),
- "not initialized");
-
- jclass engineClass = pEnv->FindClass(MANUAL_EDIT_ENGINE_CLASS_NAME);
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == engineClass),
- "not initialized");
-
- pContext->onPreviewProgressUpdateMethodId = pEnv->GetMethodID(engineClass,
- "onPreviewProgressUpdate", "(IZZLjava/lang/String;II)V");
- // Check if the context is valid (required because the context is dereferenced).
- if (needToBeLoaded) {
- // Make sure that we are in a correct state.
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (pContext->state != ManualEditState_INITIALIZED),
- "settings already loaded");
- if (needToBeLoaded) {
- // Retrieve the edit settings.
- if (pContext->pEditSettings != M4OSA_NULL) {
- videoEditClasses_freeEditSettings(&pContext->pEditSettings);
- pContext->pEditSettings = M4OSA_NULL;
- }
- videoEditClasses_getEditSettings(&needToBeLoaded, pEnv,
- settings, &pContext->pEditSettings,false);
- }
- }
-
- if (needToBeLoaded == false) {
- j = 0;
- while (j < pContext->pEditSettings->nbEffects)
- {
- if (pContext->pEditSettings->Effects[j].xVSS.pFramingFilePath != M4OSA_NULL) {
- if (pContext->pEditSettings->Effects[j].xVSS.pFramingBuffer != M4OSA_NULL) {
- free(pContext->pEditSettings->\
- Effects[j].xVSS.pFramingBuffer);
- pContext->pEditSettings->Effects[j].xVSS.pFramingBuffer = M4OSA_NULL;
- }
- }
- j++;
- }
- return;
- }
-
- M4OSA_TRACE1_0("videoEditorC_getEditSettings done");
-
- pContext->previewFrameEditInfoId = pEnv->GetMethodID(engineClass,
- "previewFrameEditInfo", "(Ljava/lang/String;I)V");
-
- if ( pContext->pEditSettings != NULL )
- {
- // Check if the edit settings could be retrieved.
- jclass mEditClazz = pEnv->FindClass(EDIT_SETTINGS_CLASS_NAME);
- if(mEditClazz == M4OSA_NULL)
- {
- M4OSA_TRACE1_0("cannot find object field for mEditClazz");
- goto videoEditor_populateSettings_cleanup;
- }
- jclass mEffectsClazz = pEnv->FindClass(EFFECT_SETTINGS_CLASS_NAME);
- if(mEffectsClazz == M4OSA_NULL)
- {
- M4OSA_TRACE1_0("cannot find object field for mEffectsClazz");
- goto videoEditor_populateSettings_cleanup;
- }
- fid = pEnv->GetFieldID(mEditClazz,"effectSettingsArray", "[L"EFFECT_SETTINGS_CLASS_NAME";" );
- if(fid == M4OSA_NULL)
- {
- M4OSA_TRACE1_0("cannot find field for effectSettingsArray Array");
- goto videoEditor_populateSettings_cleanup;
- }
- effectSettingsArray = (jobjectArray)pEnv->GetObjectField(settings, fid);
- if(effectSettingsArray == M4OSA_NULL)
- {
- M4OSA_TRACE1_0("cannot find object field for effectSettingsArray");
- goto videoEditor_populateSettings_cleanup;
- }
-
- //int overlayIndex[pContext->pEditSettings->nbEffects];
- if (pContext->pEditSettings->nbEffects > 0)
- {
- pOverlayIndex
- = (int*) M4OSA_32bitAlignedMalloc(pContext->pEditSettings->nbEffects * sizeof(int), 0,
- (M4OSA_Char*)"pOverlayIndex");
- if (pOverlayIndex == M4OSA_NULL) {
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- M4OSA_TRUE, M4ERR_ALLOC);
- goto videoEditor_populateSettings_cleanup;
- }
- }
-
- i = 0;
- j = 0;
- M4OSA_TRACE1_1("no of effects = %d",pContext->pEditSettings->nbEffects);
- while (j < pContext->pEditSettings->nbEffects)
- {
- if (pContext->pEditSettings->Effects[j].xVSS.pFramingFilePath != M4OSA_NULL)
- {
- pOverlayIndex[nbOverlays] = j;
-
- M4xVSS_FramingStruct *aFramingCtx = M4OSA_NULL;
- aFramingCtx
- = (M4xVSS_FramingStruct*)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_FramingStruct), M4VS,
- (M4OSA_Char*)"M4xVSS_internalDecodeGIF: Context of the framing effect");
- if (aFramingCtx == M4OSA_NULL)
- {
- M4OSA_TRACE1_0("Allocation error in videoEditor_populateSettings");
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- M4OSA_TRUE, M4ERR_ALLOC);
- goto videoEditor_populateSettings_cleanup;
- }
-
- aFramingCtx->pCurrent = M4OSA_NULL; /* Only used by the first element of the chain */
- aFramingCtx->previousClipTime = -1;
- aFramingCtx->FramingYuv = M4OSA_NULL;
- aFramingCtx->FramingRgb = M4OSA_NULL;
- aFramingCtx->topleft_x
- = pContext->pEditSettings->Effects[j].xVSS.topleft_x;
- aFramingCtx->topleft_y
- = pContext->pEditSettings->Effects[j].xVSS.topleft_y;
-
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "OF u_width %d",
- pContext->pEditSettings->Effects[j].xVSS.pFramingBuffer->u_width);
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "OF u_height() %d",
- pContext->pEditSettings->Effects[j].xVSS.pFramingBuffer->u_height);
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "OF rgbType() %d",
- pContext->pEditSettings->Effects[j].xVSS.rgbType);
-
- aFramingCtx->width = pContext->pEditSettings->Effects[j].xVSS.pFramingBuffer->u_width;
- aFramingCtx->height = pContext->pEditSettings->Effects[j].xVSS.pFramingBuffer->u_height;
-
- result = M4xVSS_internalConvertARGB888toYUV420_FrammingEffect(pContext->engineContext,
- &(pContext->pEditSettings->Effects[j]),aFramingCtx,
- pContext->pEditSettings->Effects[j].xVSS.framingScaledSize);
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- (M4NO_ERROR != result), result);
- if (needToBeLoaded == false) {
- M4OSA_TRACE1_1("M4xVSS_internalConvertARGB888toYUV420_FrammingEffect returned 0x%x", result);
- if (aFramingCtx != M4OSA_NULL) {
- free(aFramingCtx);
- aFramingCtx = M4OSA_NULL;
- }
- goto videoEditor_populateSettings_cleanup;
- }
-
- //framing buffers are resized to fit the output video resolution.
- pContext->pEditSettings->Effects[j].xVSS.pFramingBuffer->u_width =
- aFramingCtx->FramingRgb->u_width;
- pContext->pEditSettings->Effects[j].xVSS.pFramingBuffer->u_height =
- aFramingCtx->FramingRgb->u_height;
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "A framing Context aFramingCtx->width = %d",
- aFramingCtx->FramingRgb->u_width);
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "A framing Context aFramingCtx->height = %d",
- aFramingCtx->FramingRgb->u_height);
-
-
- width = pContext->pEditSettings->Effects[j].xVSS.pFramingBuffer->u_width;
- height = pContext->pEditSettings->Effects[j].xVSS.pFramingBuffer->u_height;
-
- //RGB 565
- pContext->pEditSettings->Effects[j].xVSS.pFramingBuffer->u_stride = width * 2;
-
- //for RGB565
- pContext->pEditSettings->Effects[j].xVSS.pFramingBuffer->u_topleft = 0;
- pContext->pEditSettings->Effects[j].xVSS.pFramingBuffer->pac_data =
- (M4VIFI_UInt8 *)M4OSA_32bitAlignedMalloc(width*height*2,
- 0x00,(M4OSA_Char *)"pac_data buffer");
-
- if (pContext->pEditSettings->Effects[j].xVSS.pFramingBuffer->pac_data == M4OSA_NULL) {
- M4OSA_TRACE1_0("Failed to allocate memory for framing buffer");
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- M4OSA_TRUE, M4ERR_ALLOC);
- goto videoEditor_populateSettings_cleanup;
- }
-
- memcpy((void *)&pContext->pEditSettings->\
- Effects[j].xVSS.pFramingBuffer->\
- pac_data[0],(void *)&aFramingCtx->FramingRgb->pac_data[0],(width*height*2));
-
- //As of now rgb type is 565
- pContext->pEditSettings->Effects[j].xVSS.rgbType =
- (M4VSS3GPP_RGBType) M4VSS3GPP_kRGB565;
-
- if (aFramingCtx->FramingYuv != M4OSA_NULL )
- {
- if (aFramingCtx->FramingYuv[0].pac_data != M4OSA_NULL) {
- free(aFramingCtx->FramingYuv[0].pac_data);
- aFramingCtx->FramingYuv[0].pac_data = M4OSA_NULL;
- }
- if (aFramingCtx->FramingYuv[1].pac_data != M4OSA_NULL) {
- free(aFramingCtx->FramingYuv[1].pac_data);
- aFramingCtx->FramingYuv[1].pac_data = M4OSA_NULL;
- }
- if (aFramingCtx->FramingYuv[2].pac_data != M4OSA_NULL) {
- free(aFramingCtx->FramingYuv[2].pac_data);
- aFramingCtx->FramingYuv[2].pac_data = M4OSA_NULL;
- }
-
- free(aFramingCtx->FramingYuv);
- aFramingCtx->FramingYuv = M4OSA_NULL;
- }
- if (aFramingCtx->FramingRgb->pac_data != M4OSA_NULL) {
- free(aFramingCtx->FramingRgb->pac_data);
- aFramingCtx->FramingRgb->pac_data = M4OSA_NULL;
- }
- if (aFramingCtx->FramingRgb != M4OSA_NULL) {
- free(aFramingCtx->FramingRgb);
- aFramingCtx->FramingRgb = M4OSA_NULL;
- }
- if (aFramingCtx != M4OSA_NULL) {
- free(aFramingCtx);
- aFramingCtx = M4OSA_NULL;
- }
- nbOverlays++;
- }
- j++;
- }
-
- // Check if the edit settings could be retrieved.
- M4OSA_TRACE1_1("total clips are = %d",pContext->pEditSettings->uiClipNumber);
- for (i = 0; i < pContext->pEditSettings->uiClipNumber; i++) {
- M4OSA_TRACE1_1("clip no = %d",i);
- properties = pEnv->GetObjectArrayElement(propertiesClipsArray, i);
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == properties),
- "not initialized");
- if (needToBeLoaded) {
- getClipSetting(pEnv,properties, pContext->pEditSettings->pClipList[i]);
- pEnv->DeleteLocalRef(properties);
- } else {
- pEnv->DeleteLocalRef(properties);
- goto videoEditor_populateSettings_cleanup;
- }
- }
-
- if (needToBeLoaded) {
- // Log the edit settings.
- VIDEOEDIT_LOG_EDIT_SETTINGS(pContext->pEditSettings);
- }
- }
- /* free previous allocations , if any */
- if (pContext->mAudioSettings != M4OSA_NULL) {
- if (pContext->mAudioSettings->pFile != NULL) {
- free(pContext->mAudioSettings->pFile);
- pContext->mAudioSettings->pFile = M4OSA_NULL;
- }
- if (pContext->mAudioSettings->pPCMFilePath != NULL) {
- free(pContext->mAudioSettings->pPCMFilePath);
- pContext->mAudioSettings->pPCMFilePath = M4OSA_NULL;
- }
- }
-
- if (audioSettingObject != M4OSA_NULL) {
- jclass audioSettingClazz = pEnv->FindClass(AUDIO_SETTINGS_CLASS_NAME);
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == audioSettingClazz),
- "not initialized");
-
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == pContext->mAudioSettings),
- "not initialized");
-
- if (needToBeLoaded == false) {
- goto videoEditor_populateSettings_cleanup;
- }
-
- fid = pEnv->GetFieldID(audioSettingClazz,"bRemoveOriginal","Z");
- pContext->mAudioSettings->bRemoveOriginal =
- pEnv->GetBooleanField(audioSettingObject,fid);
- M4OSA_TRACE1_1("bRemoveOriginal = %d",pContext->mAudioSettings->bRemoveOriginal);
-
- fid = pEnv->GetFieldID(audioSettingClazz,"channels","I");
- pContext->mAudioSettings->uiNbChannels = pEnv->GetIntField(audioSettingObject,fid);
- M4OSA_TRACE1_1("uiNbChannels = %d",pContext->mAudioSettings->uiNbChannels);
-
- fid = pEnv->GetFieldID(audioSettingClazz,"Fs","I");
- pContext->mAudioSettings->uiSamplingFrequency = pEnv->GetIntField(audioSettingObject,fid);
- M4OSA_TRACE1_1("uiSamplingFrequency = %d",pContext->mAudioSettings->uiSamplingFrequency);
-
- fid = pEnv->GetFieldID(audioSettingClazz,"ExtendedFs","I");
- pContext->mAudioSettings->uiExtendedSamplingFrequency =
- pEnv->GetIntField(audioSettingObject,fid);
- M4OSA_TRACE1_1("uiExtendedSamplingFrequency = %d",
- pContext->mAudioSettings->uiExtendedSamplingFrequency);
-
- fid = pEnv->GetFieldID(audioSettingClazz,"startMs","J");
- pContext->mAudioSettings->uiAddCts
- = pEnv->GetLongField(audioSettingObject,fid);
- M4OSA_TRACE1_1("uiAddCts = %d",pContext->mAudioSettings->uiAddCts);
-
- fid = pEnv->GetFieldID(audioSettingClazz,"volume","I");
- pContext->mAudioSettings->uiAddVolume
- = pEnv->GetIntField(audioSettingObject,fid);
- M4OSA_TRACE1_1("uiAddVolume = %d",pContext->mAudioSettings->uiAddVolume);
-
- fid = pEnv->GetFieldID(audioSettingClazz,"loop","Z");
- pContext->mAudioSettings->bLoop
- = pEnv->GetBooleanField(audioSettingObject,fid);
- M4OSA_TRACE1_1("bLoop = %d",pContext->mAudioSettings->bLoop);
-
- fid = pEnv->GetFieldID(audioSettingClazz,"beginCutTime","J");
- pContext->mAudioSettings->beginCutMs
- = pEnv->GetLongField(audioSettingObject,fid);
- M4OSA_TRACE1_1("begin cut time = %d",pContext->mAudioSettings->beginCutMs);
-
- fid = pEnv->GetFieldID(audioSettingClazz,"endCutTime","J");
- pContext->mAudioSettings->endCutMs
- = pEnv->GetLongField(audioSettingObject,fid);
- M4OSA_TRACE1_1("end cut time = %d",pContext->mAudioSettings->endCutMs);
-
- fid = pEnv->GetFieldID(audioSettingClazz,"fileType","I");
- pContext->mAudioSettings->fileType
- = pEnv->GetIntField(audioSettingObject,fid);
- M4OSA_TRACE1_1("fileType = %d",pContext->mAudioSettings->fileType);
-
- fid = pEnv->GetFieldID(audioSettingClazz,"pFile","Ljava/lang/String;");
- strPath = (jstring)pEnv->GetObjectField(audioSettingObject,fid);
- pTempChar = (M4OSA_Char*)pEnv->GetStringUTFChars(strPath, M4OSA_NULL);
- if (pTempChar != NULL) {
- pContext->mAudioSettings->pFile = (M4OSA_Char*) M4OSA_32bitAlignedMalloc(
- (M4OSA_UInt32)(strlen((const char*)pTempChar))+1 /* +1 for NULL termination */, 0,
- (M4OSA_Char*)"strPath allocation " );
- if (pContext->mAudioSettings->pFile != M4OSA_NULL) {
- memcpy((void *)pContext->mAudioSettings->pFile ,
- (void *)pTempChar , strlen((const char*)pTempChar));
- ((M4OSA_Int8 *)(pContext->mAudioSettings->pFile))[strlen((const char*)pTempChar)] = '\0';
- pEnv->ReleaseStringUTFChars(strPath,(const char *)pTempChar);
- } else {
- pEnv->ReleaseStringUTFChars(strPath,(const char *)pTempChar);
- VIDEOEDIT_LOG_ERROR(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "regenerateAudio() Malloc failed for pContext->mAudioSettings->pFile ");
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- M4OSA_TRUE, M4ERR_ALLOC);
- goto videoEditor_populateSettings_cleanup;
- }
- }
- M4OSA_TRACE1_1("file name = %s",pContext->mAudioSettings->pFile);
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEOEDITOR", "regenerateAudio() file name = %s",\
- pContext->mAudioSettings->pFile);
-
- fid = pEnv->GetFieldID(audioSettingClazz,"pcmFilePath","Ljava/lang/String;");
- strPCMPath = (jstring)pEnv->GetObjectField(audioSettingObject,fid);
- pTempChar = (M4OSA_Char*)pEnv->GetStringUTFChars(strPCMPath, M4OSA_NULL);
- if (pTempChar != NULL) {
- pContext->mAudioSettings->pPCMFilePath = (M4OSA_Char*) M4OSA_32bitAlignedMalloc(
- (M4OSA_UInt32)(strlen((const char*)pTempChar))+1 /* +1 for NULL termination */, 0,
- (M4OSA_Char*)"strPCMPath allocation " );
- if (pContext->mAudioSettings->pPCMFilePath != M4OSA_NULL) {
- memcpy((void *)pContext->mAudioSettings->pPCMFilePath ,
- (void *)pTempChar , strlen((const char*)pTempChar));
- ((M4OSA_Int8 *)(pContext->mAudioSettings->pPCMFilePath))[strlen((const char*)pTempChar)] = '\0';
- pEnv->ReleaseStringUTFChars(strPCMPath,(const char *)pTempChar);
- } else {
- pEnv->ReleaseStringUTFChars(strPCMPath,(const char *)pTempChar);
- VIDEOEDIT_LOG_ERROR(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "regenerateAudio() Malloc failed for pContext->mAudioSettings->pPCMFilePath ");
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- M4OSA_TRUE, M4ERR_ALLOC);
- goto videoEditor_populateSettings_cleanup;
- }
- }
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEOEDITOR", "pPCMFilePath -- %s ",\
- pContext->mAudioSettings->pPCMFilePath);
-
- fid = pEnv->GetFieldID(engineClass,"mRegenerateAudio","Z");
- bool regenerateAudio = pEnv->GetBooleanField(thiz,fid);
-
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEOEDITOR", "regenerateAudio -- %d ",\
- regenerateAudio);
-
- if (regenerateAudio) {
- M4OSA_TRACE1_0("Calling Generate Audio now");
- result = videoEditor_generateAudio(pEnv,
- pContext,
- (M4OSA_Char*)pContext->mAudioSettings->pFile,
- (M4OSA_Char*)pContext->mAudioSettings->pPCMFilePath);
-
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- (M4NO_ERROR != result), result);
- if (needToBeLoaded == false) {
- goto videoEditor_populateSettings_cleanup;
- }
-
- regenerateAudio = false;
- pEnv->SetBooleanField(thiz,fid,regenerateAudio);
- }
-
- /* Audio mix and duck */
- fid = pEnv->GetFieldID(audioSettingClazz,"ducking_threshold","I");
- pContext->mAudioSettings->uiInDucking_threshold
- = pEnv->GetIntField(audioSettingObject,fid);
-
- M4OSA_TRACE1_1("ducking threshold = %d",
- pContext->mAudioSettings->uiInDucking_threshold);
-
- fid = pEnv->GetFieldID(audioSettingClazz,"ducking_lowVolume","I");
- pContext->mAudioSettings->uiInDucking_lowVolume
- = pEnv->GetIntField(audioSettingObject,fid);
-
- M4OSA_TRACE1_1("ducking lowVolume = %d",
- pContext->mAudioSettings->uiInDucking_lowVolume);
-
- fid = pEnv->GetFieldID(audioSettingClazz,"bInDucking_enable","Z");
- pContext->mAudioSettings->bInDucking_enable
- = pEnv->GetBooleanField(audioSettingObject,fid);
- M4OSA_TRACE1_1("ducking lowVolume = %d",
- pContext->mAudioSettings->bInDucking_enable);
-
- } else {
- if (pContext->mAudioSettings != M4OSA_NULL) {
- pContext->mAudioSettings->pFile = M4OSA_NULL;
- pContext->mAudioSettings->pPCMFilePath = M4OSA_NULL;
- pContext->mAudioSettings->bRemoveOriginal = 0;
- pContext->mAudioSettings->uiNbChannels = 0;
- pContext->mAudioSettings->uiSamplingFrequency = 0;
- pContext->mAudioSettings->uiExtendedSamplingFrequency = 0;
- pContext->mAudioSettings->uiAddCts = 0;
- pContext->mAudioSettings->uiAddVolume = 0;
- pContext->mAudioSettings->beginCutMs = 0;
- pContext->mAudioSettings->endCutMs = 0;
- pContext->mAudioSettings->fileType = 0;
- pContext->mAudioSettings->bLoop = 0;
- pContext->mAudioSettings->uiInDucking_lowVolume = 0;
- pContext->mAudioSettings->bInDucking_enable = 0;
- pContext->mAudioSettings->uiBTChannelCount = 0;
- pContext->mAudioSettings->uiInDucking_threshold = 0;
-
- fid = pEnv->GetFieldID(engineClass,"mRegenerateAudio","Z");
- bool regenerateAudio = pEnv->GetBooleanField(thiz,fid);
- if (!regenerateAudio) {
- regenerateAudio = true;
- pEnv->SetBooleanField(thiz,fid,regenerateAudio);
- }
- }
- }
-
- if (pContext->pEditSettings != NULL)
- {
- result = pContext->mPreviewController->loadEditSettings(pContext->pEditSettings,
- pContext->mAudioSettings);
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- (M4NO_ERROR != result), result);
-
- if (needToBeLoaded) {
- pContext->mPreviewController->setJniCallback((void*)pContext,
- (jni_progress_callback_fct)jniPreviewProgressCallback);
- }
- }
-
-videoEditor_populateSettings_cleanup:
- j = 0;
- while (j < nbOverlays)
- {
- if (pContext->pEditSettings->Effects[pOverlayIndex[j]].xVSS.pFramingBuffer->pac_data != \
- M4OSA_NULL) {
- free(pContext->pEditSettings->\
- Effects[pOverlayIndex[j]].xVSS.pFramingBuffer->pac_data);
- pContext->pEditSettings->\
- Effects[pOverlayIndex[j]].xVSS.pFramingBuffer->pac_data = M4OSA_NULL;
- }
- j++;
- }
-
- j = 0;
- while (j < pContext->pEditSettings->nbEffects)
- {
- if (pContext->pEditSettings->Effects[j].xVSS.pFramingFilePath != M4OSA_NULL) {
- if (pContext->pEditSettings->Effects[j].xVSS.pFramingBuffer != M4OSA_NULL) {
- free(pContext->pEditSettings->\
- Effects[j].xVSS.pFramingBuffer);
- pContext->pEditSettings->Effects[j].xVSS.pFramingBuffer = M4OSA_NULL;
- }
- }
- j++;
- }
-
- if (pOverlayIndex != M4OSA_NULL)
- {
- free(pOverlayIndex);
- pOverlayIndex = M4OSA_NULL;
- }
- return;
-}
-
-static void
-videoEditor_startPreview(
- JNIEnv* pEnv,
- jobject thiz,
- jobject mSurface,
- jlong fromMs,
- jlong toMs,
- jint callbackInterval,
- jboolean loop)
-{
- bool needToBeLoaded = true;
- M4OSA_ERR result = M4NO_ERROR;
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "videoEditor_startPreview()");
-
- ManualEditContext* pContext = M4OSA_NULL;
- // Get the context.
- pContext = (ManualEditContext*)videoEditClasses_getContext(&needToBeLoaded, pEnv, thiz);
-
- // Make sure that the context was set.
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == pContext),
- "not initialized");
-
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == pContext->mAudioSettings),
- "not initialized");
- // Make sure that the context was set.
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == pContext->mPreviewController),
- "not initialized");
-
- // Validate the mSurface parameter.
- videoEditJava_checkAndThrowIllegalArgumentException(&needToBeLoaded, pEnv,
- (NULL == mSurface),
- "mSurface is null");
-
- sp<Surface> previewSurface = android_view_Surface_getSurface(pEnv, mSurface);
-
- // Validate the mSurface's mNativeSurface field
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (NULL == previewSurface.get()),
- "mNativeSurface is null");
-
- result = pContext->mPreviewController->setSurface(previewSurface);
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv,
- (M4NO_ERROR != result), result);
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "fromMs=%ld, toMs=%ld",
- (M4OSA_UInt32)fromMs, (M4OSA_Int32)toMs);
-
- result = pContext->mPreviewController->startPreview((M4OSA_UInt32)fromMs,
- (M4OSA_Int32)toMs,
- (M4OSA_UInt16)callbackInterval,
- (M4OSA_Bool)loop);
- videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv, (M4NO_ERROR != result), result);
-}
-
-
-static jobject
-videoEditor_getProperties(
- JNIEnv* pEnv,
- jobject thiz,
- jstring file)
-{
- jobject object = M4OSA_NULL;
- jclass clazz = pEnv->FindClass(PROPERTIES_CLASS_NAME);
- jfieldID fid;
- bool needToBeLoaded = true;
- ManualEditContext* pContext = M4OSA_NULL;
- M4OSA_ERR result = M4NO_ERROR;
- int profile = 0;
- int level = 0;
- int videoFormat = 0;
-
- // Get the context.
- pContext = (ManualEditContext*)videoEditClasses_getContext(&needToBeLoaded, pEnv, thiz);
-
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == clazz),
- "not initialized");
-
- object = videoEditProp_getProperties(pEnv,thiz,file);
-
- if (object != M4OSA_NULL) {
- fid = pEnv->GetFieldID(clazz,"profile","I");
- profile = pEnv->GetIntField(object,fid);
- fid = pEnv->GetFieldID(clazz,"level","I");
- level = pEnv->GetIntField(object,fid);
- fid = pEnv->GetFieldID(clazz,"videoFormat","I");
- videoFormat = pEnv->GetIntField(object,fid);
-
- result = checkClipVideoProfileAndLevel(pContext->decoders, videoFormat, profile, level);
-
- fid = pEnv->GetFieldID(clazz,"profileSupported","Z");
- if (M4VSS3GPP_ERR_EDITING_UNSUPPORTED_VIDEO_PROFILE == result) {
- pEnv->SetBooleanField(object,fid,false);
- }
-
- fid = pEnv->GetFieldID(clazz,"levelSupported","Z");
- if (M4VSS3GPP_ERR_EDITING_UNSUPPORTED_VIDEO_LEVEL == result) {
- pEnv->SetBooleanField(object,fid,false);
- }
- }
- return object;
-
-}
-static jint videoEditor_getPixels(
- JNIEnv* env,
- jobject thiz,
- jstring path,
- jintArray pixelArray,
- M4OSA_UInt32 width,
- M4OSA_UInt32 height,
- M4OSA_UInt32 timeMS)
-{
-
- M4OSA_ERR err = M4NO_ERROR;
- M4OSA_Context mContext = M4OSA_NULL;
- jint* m_dst32 = M4OSA_NULL;
-
- const char *pString = env->GetStringUTFChars(path, NULL);
- if (pString == M4OSA_NULL) {
- if (env != NULL) {
- jniThrowException(env, "java/lang/RuntimeException", "Input string null");
- }
- return M4ERR_ALLOC;
- }
-
- err = ThumbnailOpen(&mContext,(const M4OSA_Char*)pString, M4OSA_FALSE);
- if (err != M4NO_ERROR || mContext == M4OSA_NULL) {
- if (pString != NULL) {
- env->ReleaseStringUTFChars(path, pString);
- }
- if (env != NULL) {
- jniThrowException(env, "java/lang/RuntimeException", "ThumbnailOpen failed");
- }
- }
-
- m_dst32 = env->GetIntArrayElements(pixelArray, NULL);
-
- err = ThumbnailGetPixels32(mContext, (M4OSA_Int32 *)m_dst32, width,height,&timeMS,0);
- if (err != M4NO_ERROR ) {
- if (env != NULL) {
- jniThrowException(env, "java/lang/RuntimeException",\
- "ThumbnailGetPixels32 failed");
- }
- }
- env->ReleaseIntArrayElements(pixelArray, m_dst32, 0);
-
- ThumbnailClose(mContext);
- if (pString != NULL) {
- env->ReleaseStringUTFChars(path, pString);
- }
-
- return (jint)timeMS;
-}
-
-static jint videoEditor_getPixelsList(
- JNIEnv* env,
- jobject thiz,
- jstring path,
- jintArray pixelArray,
- M4OSA_UInt32 width,
- M4OSA_UInt32 height,
- M4OSA_UInt32 noOfThumbnails,
- jlong startTime,
- jlong endTime,
- jintArray indexArray,
- jobject callback)
-{
-
- M4OSA_ERR err = M4NO_ERROR;
- M4OSA_Context mContext = M4OSA_NULL;
-
- const char *pString = env->GetStringUTFChars(path, NULL);
- if (pString == M4OSA_NULL) {
- jniThrowException(env, "java/lang/RuntimeException", "Input string null");
- return (jint)M4ERR_ALLOC;
- }
-
- err = ThumbnailOpen(&mContext,(const M4OSA_Char*)pString, M4OSA_FALSE);
- if (err != M4NO_ERROR || mContext == M4OSA_NULL) {
- jniThrowException(env, "java/lang/RuntimeException", "ThumbnailOpen failed");
- if (pString != NULL) {
- env->ReleaseStringUTFChars(path, pString);
- }
- return (jint)err;
- }
-
- jlong duration = (endTime - startTime);
- M4OSA_UInt32 tolerance = duration / (2 * noOfThumbnails);
- jint* m_dst32 = env->GetIntArrayElements(pixelArray, NULL);
- jint* indices = env->GetIntArrayElements(indexArray, NULL);
- jsize len = env->GetArrayLength(indexArray);
-
- jclass cls = env->GetObjectClass(callback);
- jmethodID mid = env->GetMethodID(cls, "onThumbnail", "(I)V");
-
- for (int i = 0; i < len; i++) {
- int k = indices[i];
- M4OSA_UInt32 timeMS = startTime;
- timeMS += (2 * k + 1) * duration / (2 * noOfThumbnails);
- err = ThumbnailGetPixels32(mContext, ((M4OSA_Int32 *)m_dst32),
- width, height, &timeMS, tolerance);
- if (err != M4NO_ERROR) {
- break;
- }
- env->CallVoidMethod(callback, mid, (jint)k);
- if (env->ExceptionCheck()) {
- err = M4ERR_ALLOC;
- break;
- }
- }
-
- env->ReleaseIntArrayElements(pixelArray, m_dst32, 0);
- env->ReleaseIntArrayElements(indexArray, indices, 0);
-
- ThumbnailClose(mContext);
- if (pString != NULL) {
- env->ReleaseStringUTFChars(path, pString);
- }
-
- if (err != M4NO_ERROR && !env->ExceptionCheck()) {
- jniThrowException(env, "java/lang/RuntimeException",\
- "ThumbnailGetPixels32 failed");
- }
-
- return (jint)err;
-}
-
-static M4OSA_ERR
-videoEditor_toUTF8Fct(
- M4OSA_Void* pBufferIn,
- M4OSA_UInt8* pBufferOut,
- M4OSA_UInt32* bufferOutSize)
-{
- M4OSA_ERR result = M4NO_ERROR;
- M4OSA_UInt32 length = 0;
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "videoEditor_toUTF8Fct()");
-
- // Determine the length of the input buffer.
- if (M4OSA_NULL != pBufferIn)
- {
- length = strlen((const char *)pBufferIn);
- }
-
- // Check if the output buffer is large enough to hold the input buffer.
- if ((*bufferOutSize) > length)
- {
- // Check if the input buffer is not M4OSA_NULL.
- if (M4OSA_NULL != pBufferIn)
- {
- // Copy the temp path, ignore the result.
- M4OSA_chrNCopy((M4OSA_Char *)pBufferOut, (M4OSA_Char *)pBufferIn, length);
- }
- else
- {
- // Set the output buffer to an empty string.
- (*(M4OSA_Char *)pBufferOut) = 0;
- }
- }
- else
- {
- // The buffer is too small.
- result = M4xVSSWAR_BUFFER_OUT_TOO_SMALL;
- }
-
- // Return the buffer output size.
- (*bufferOutSize) = length + 1;
-
- // Return the result.
- return(result);
-}
-
-static M4OSA_ERR
-videoEditor_fromUTF8Fct(
- M4OSA_UInt8* pBufferIn,
- M4OSA_Void* pBufferOut,
- M4OSA_UInt32* bufferOutSize)
-{
- M4OSA_ERR result = M4NO_ERROR;
- M4OSA_UInt32 length = 0;
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "videoEditor_fromUTF8Fct()");
-
- // Determine the length of the input buffer.
- if (M4OSA_NULL != pBufferIn)
- {
- length = strlen((const char *)pBufferIn);
- }
-
- // Check if the output buffer is large enough to hold the input buffer.
- if ((*bufferOutSize) > length)
- {
- // Check if the input buffer is not M4OSA_NULL.
- if (M4OSA_NULL != pBufferIn)
- {
- // Copy the temp path, ignore the result.
- M4OSA_chrNCopy((M4OSA_Char *)pBufferOut, (M4OSA_Char *)pBufferIn, length);
- }
- else
- {
- // Set the output buffer to an empty string.
- (*(M4OSA_Char *)pBufferOut) = 0;
- }
- }
- else
- {
- // The buffer is too small.
- result = M4xVSSWAR_BUFFER_OUT_TOO_SMALL;
- }
-
- // Return the buffer output size.
- (*bufferOutSize) = length + 1;
-
- // Return the result.
- return(result);
-}
-
-static M4OSA_ERR
-videoEditor_getTextRgbBufferFct(
- M4OSA_Void* pRenderingData,
- M4OSA_Void* pTextBuffer,
- M4OSA_UInt32 textBufferSize,
- M4VIFI_ImagePlane** pOutputPlane)
-{
- M4OSA_ERR result = M4NO_ERROR;
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "videoEditor_getTextRgbBufferFct()");
-
- // Return the result.
- return(result);
-}
-
-static void
-videoEditor_callOnProgressUpdate(
- ManualEditContext* pContext,
- int task,
- int progress)
-{
- JNIEnv* pEnv = NULL;
-
-
- // Attach the current thread.
- pContext->pVM->AttachCurrentThread(&pEnv, NULL);
-
-
- // Call the on completion callback.
- pEnv->CallVoidMethod(pContext->engine, pContext->onProgressUpdateMethodId,
- videoEditJava_getEngineCToJava(task), progress);
-
-
- // Detach the current thread.
- pContext->pVM->DetachCurrentThread();
-}
-
-static void
-videoEditor_freeContext(
- JNIEnv* pEnv,
- ManualEditContext** ppContext)
-{
- ManualEditContext* pContext = M4OSA_NULL;
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "videoEditor_freeContext");
-
- // Set the context pointer.
- pContext = (*ppContext);
-
- // Check if the context was set.
- if (M4OSA_NULL != pContext)
- {
- // Check if a global reference to the engine object was set.
- if (NULL != pContext->engine)
- {
- // Free the global reference.
- pEnv->DeleteGlobalRef(pContext->engine);
- pContext->engine = NULL;
- }
-
- // Check if the temp path was set.
- if (M4OSA_NULL != pContext->initParams.pTempPath)
- {
- // Free the memory allocated for the temp path.
- videoEditOsal_free(pContext->initParams.pTempPath);
- pContext->initParams.pTempPath = M4OSA_NULL;
- }
-
- // Check if the file writer was set.
- if (M4OSA_NULL != pContext->initParams.pFileWritePtr)
- {
- // Free the memory allocated for the file writer.
- videoEditOsal_free(pContext->initParams.pFileWritePtr);
- pContext->initParams.pFileWritePtr = M4OSA_NULL;
- }
-
- // Check if the file reader was set.
- if (M4OSA_NULL != pContext->initParams.pFileReadPtr)
- {
- // Free the memory allocated for the file reader.
- videoEditOsal_free(pContext->initParams.pFileReadPtr);
- pContext->initParams.pFileReadPtr = M4OSA_NULL;
- }
-
- // Free the memory allocated for the context.
- videoEditOsal_free(pContext);
- pContext = M4OSA_NULL;
-
- // Reset the context pointer.
- (*ppContext) = M4OSA_NULL;
- }
-}
-
-static jobject
-videoEditor_getVersion(
- JNIEnv* pEnv,
- jobject thiz)
-{
- bool isSuccessful = true;
- jobject version = NULL;
- M4_VersionInfo versionInfo = {0, 0, 0, 0};
- M4OSA_ERR result = M4NO_ERROR;
-
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR", "videoEditor_getVersion()");
-
- versionInfo.m_structSize = sizeof(versionInfo);
- versionInfo.m_major = VIDEOEDITOR_VERSION_MAJOR;
- versionInfo.m_minor = VIDEOEDITOR_VERSION_MINOR;
- versionInfo.m_revision = VIDEOEDITOR_VERSION_REVISION;
-
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR", "videoEditor_getVersion() major %d,\
- minor %d, revision %d", versionInfo.m_major, versionInfo.m_minor, versionInfo.m_revision);
-
- // Create a version object.
- videoEditClasses_createVersion(&isSuccessful, pEnv, &versionInfo, &version);
-
- // Return the version object.
- return(version);
-}
-
-static void
-videoEditor_init(
- JNIEnv* pEnv,
- jobject thiz,
- jstring tempPath,
- jstring libraryPath)
-{
- bool initialized = true;
- ManualEditContext* pContext = M4OSA_NULL;
- VideoEditJava_EngineMethodIds methodIds = {NULL};
- M4OSA_Char* pLibraryPath = M4OSA_NULL;
- M4OSA_Char* pTextRendererPath = M4OSA_NULL;
- M4OSA_UInt32 textRendererPathLength = 0;
- M4OSA_ERR result = M4NO_ERROR;
-
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR", "videoEditor_init()");
-
- // Get the context.
- pContext = (ManualEditContext*)videoEditClasses_getContext(&initialized, pEnv, thiz);
-
- // Get the engine method ids.
- videoEditJava_getEngineMethodIds(&initialized, pEnv, &methodIds);
-
- // Validate the tempPath parameter.
- videoEditJava_checkAndThrowIllegalArgumentException(&initialized, pEnv,
- (NULL == tempPath),
- "tempPath is null");
-
- // Make sure that the context was not set already.
- videoEditJava_checkAndThrowIllegalStateException(&initialized, pEnv,
- (M4OSA_NULL != pContext),
- "already initialized");
-
- // Check if the initialization succeeded (required because of dereferencing of psContext,
- // and freeing when initialization fails).
- if (initialized)
- {
- // Allocate a new context.
- pContext = new ManualEditContext;
-
- // Check if the initialization succeeded (required because of dereferencing of psContext).
- //if (initialized)
- if (pContext != NULL)
- {
- // Set the state to not initialized.
- pContext->state = ManualEditState_NOT_INITIALIZED;
-
- // Allocate a file read pointer structure.
- pContext->initParams.pFileReadPtr =
- (M4OSA_FileReadPointer*)videoEditOsal_alloc(&initialized, pEnv,
- sizeof(M4OSA_FileReadPointer), "FileReadPointer");
-
- // Allocate a file write pointer structure.
- pContext->initParams.pFileWritePtr =
- (M4OSA_FileWriterPointer*)videoEditOsal_alloc(&initialized, pEnv,
- sizeof(M4OSA_FileWriterPointer), "FileWriterPointer");
-
- // Get the temp path.
- M4OSA_Char* tmpString =
- (M4OSA_Char *)videoEditJava_getString(&initialized, pEnv, tempPath,
- NULL, M4OSA_NULL);
- M4OSA_UInt32 length = strlen((const char *)tmpString);
- // Malloc additional 2 bytes for beginning and tail separator.
- M4OSA_UInt32 pathLength = length + 2;
-
- pContext->initParams.pTempPath = (M4OSA_Char *)
- M4OSA_32bitAlignedMalloc(pathLength, 0x0, (M4OSA_Char *)"tempPath");
-
- //initialize the first char. so that strcat works.
- M4OSA_Char *ptmpChar = (M4OSA_Char*)pContext->initParams.pTempPath;
- ptmpChar[0] = 0x00;
- strncat((char *)pContext->initParams.pTempPath, (const char *)tmpString,
- length);
- strncat((char *)pContext->initParams.pTempPath, (const char *)"/", (size_t)1);
- free(tmpString);
- tmpString = NULL;
- pContext->mIsUpdateOverlay = false;
- pContext->mOverlayFileName = NULL;
- pContext->decoders = NULL;
- }
-
- // Check if the initialization succeeded
- // (required because of dereferencing of pContext, pFileReadPtr and pFileWritePtr).
- if (initialized)
- {
-
- // Initialize the OSAL file system function pointers.
- videoEditOsal_getFilePointers(pContext->initParams.pFileReadPtr ,
- pContext->initParams.pFileWritePtr);
-
- // Set the UTF8 conversion functions.
- pContext->initParams.pConvToUTF8Fct = videoEditor_toUTF8Fct;
- pContext->initParams.pConvFromUTF8Fct = videoEditor_fromUTF8Fct;
-
- // Set the callback method ids.
- pContext->onProgressUpdateMethodId = methodIds.onProgressUpdate;
-
- // Set the virtual machine.
- pEnv->GetJavaVM(&(pContext->pVM));
-
- // Create a global reference to the engine object.
- pContext->engine = pEnv->NewGlobalRef(thiz);
-
- // Check if the global reference could be created.
- videoEditJava_checkAndThrowRuntimeException(&initialized, pEnv,
- (NULL == pContext->engine), M4NO_ERROR);
- }
-
- // Check if the initialization succeeded (required because of dereferencing of pContext).
- if (initialized)
- {
- // Log the API call.
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR", "M4xVSS_Init()");
-
- // Initialize the visual studio library.
- result = M4xVSS_Init(&pContext->engineContext, &pContext->initParams);
-
- // Log the result.
- VIDEOEDIT_LOG_RESULT(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- videoEditOsal_getResultString(result));
-
- // Check if the library could be initialized.
- videoEditJava_checkAndThrowRuntimeException(&initialized, pEnv,
- (M4NO_ERROR != result), result);
-
- // Get platform video decoder capablities.
- result = M4xVSS_getVideoDecoderCapabilities(&pContext->decoders);
-
- videoEditJava_checkAndThrowRuntimeException(&initialized, pEnv,
- (M4NO_ERROR != result), result);
- }
-
- if(initialized)
- {
- pContext->mPreviewController = new VideoEditorPreviewController();
- videoEditJava_checkAndThrowIllegalStateException(&initialized, pEnv,
- (M4OSA_NULL == pContext->mPreviewController),
- "not initialized");
- pContext->mAudioSettings =
- (M4xVSS_AudioMixingSettings *)
- M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_AudioMixingSettings),0x0,
- (M4OSA_Char *)"mAudioSettings");
- videoEditJava_checkAndThrowIllegalStateException(&initialized, pEnv,
- (M4OSA_NULL == pContext->mAudioSettings),
- "not initialized");
- pContext->mAudioSettings->pFile = M4OSA_NULL;
- pContext->mAudioSettings->pPCMFilePath = M4OSA_NULL;
- pContext->mAudioSettings->bRemoveOriginal = 0;
- pContext->mAudioSettings->uiNbChannels = 0;
- pContext->mAudioSettings->uiSamplingFrequency = 0;
- pContext->mAudioSettings->uiExtendedSamplingFrequency = 0;
- pContext->mAudioSettings->uiAddCts = 0;
- pContext->mAudioSettings->uiAddVolume = 0;
- pContext->mAudioSettings->beginCutMs = 0;
- pContext->mAudioSettings->endCutMs = 0;
- pContext->mAudioSettings->fileType = 0;
- pContext->mAudioSettings->bLoop = 0;
- pContext->mAudioSettings->uiInDucking_lowVolume = 0;
- pContext->mAudioSettings->bInDucking_enable = 0;
- pContext->mAudioSettings->uiBTChannelCount = 0;
- pContext->mAudioSettings->uiInDucking_threshold = 0;
- }
- // Check if the library could be initialized.
- if (initialized)
- {
- // Set the state to initialized.
- pContext->state = ManualEditState_INITIALIZED;
- }
-
- // Set the context.
- videoEditClasses_setContext(&initialized, pEnv, thiz, (void* )pContext);
- pLibraryPath = M4OSA_NULL;
-
- pContext->pEditSettings = M4OSA_NULL;
- // Cleanup if anything went wrong during initialization.
- if (!initialized)
- {
- // Free the context.
- videoEditor_freeContext(pEnv, &pContext);
- }
- }
-}
-
-/*+ PROGRESS CB */
-static
-M4OSA_ERR videoEditor_processClip(
- JNIEnv* pEnv,
- jobject thiz,
- int unuseditemID) {
-
- bool loaded = true;
- ManualEditContext* pContext = NULL;
- M4OSA_UInt8 progress = 0;
- M4OSA_UInt8 progressBase = 0;
- M4OSA_UInt8 lastProgress = 0;
- M4OSA_ERR result = M4NO_ERROR;
-
- // Get the context.
- pContext = (ManualEditContext*)videoEditClasses_getContext(&loaded, pEnv, thiz);
-
- // Make sure that the context was set.
- videoEditJava_checkAndThrowIllegalStateException(&loaded, pEnv,
- (M4OSA_NULL == pContext),
- "not initialized");
-
- // We start in Analyzing state
- pContext->state = ManualEditState_INITIALIZED;
- M4OSA_ERR completionResult = M4VSS3GPP_WAR_ANALYZING_DONE;
- ManualEditState completionState = ManualEditState_OPENED;
- ManualEditState errorState = ManualEditState_ANALYZING_ERROR;
-
- // While analyzing progress goes from 0 to 10 (except Kenburn clip
- // generation, which goes from 0 to 50)
- progressBase = 0;
-
- // Set the text rendering function.
- if (M4OSA_NULL != pContext->pTextRendererFunction)
- {
- // Use the text renderer function in the library.
- pContext->pEditSettings->xVSS.pTextRenderingFct = pContext->pTextRendererFunction;
- }
- else
- {
- // Use the internal text renderer function.
- pContext->pEditSettings->xVSS.pTextRenderingFct = videoEditor_getTextRgbBufferFct;
- }
-
- // Send the command.
- ALOGV("videoEditor_processClip ITEM %d Calling M4xVSS_SendCommand()", unuseditemID);
- result = M4xVSS_SendCommand(pContext->engineContext, pContext->pEditSettings);
- ALOGV("videoEditor_processClip ITEM %d M4xVSS_SendCommand() returned 0x%x",
- unuseditemID, (unsigned int) result);
-
- // Remove warnings indications (we only care about errors here)
- if ((result == M4VSS3GPP_WAR_TRANSCODING_NECESSARY)
- || (result == M4VSS3GPP_WAR_OUTPUTFILESIZE_EXCEED)) {
- result = M4NO_ERROR;
- }
-
- // Send the first progress indication (=0)
- ALOGV("VERY FIRST PROGRESS videoEditor_processClip ITEM %d Progress indication %d",
- unuseditemID, progress);
- pEnv->CallVoidMethod(pContext->engine, pContext->onProgressUpdateMethodId,
- unuseditemID, progress);
-
- // Check if a task is being performed.
- // ??? ADD STOPPING MECHANISM
- ALOGV("videoEditor_processClip Entering processing loop");
- M4OSA_UInt8 prevReportedProgress = 0;
- while((result == M4NO_ERROR)
- &&(pContext->state!=ManualEditState_SAVED)
- &&(pContext->state!=ManualEditState_STOPPING)) {
-
- // Perform the next processing step.
- //ALOGV("LVME_processClip Entering M4xVSS_Step()");
- result = M4xVSS_Step(pContext->engineContext, &progress);
-
- if (progress != prevReportedProgress) {
- prevReportedProgress = progress;
- // Log the 1 % .. 100 % progress after processing.
- if (M4OSA_TRUE ==
- pContext->pEditSettings->pClipList[0]->xVSS.isPanZoom) {
- // For KenBurn clip generation, return 0 to 50
- // for Analysis phase and 50 to 100 for Saving phase
- progress = progressBase + progress/2;
- } else {
- // For export/transition clips, 0 to 10 for Analysis phase
- // and 10 to 100 for Saving phase
- if (ManualEditState_INITIALIZED == pContext->state) {
- progress = 0.1*progress;
- } else {
- progress = progressBase + 0.9*progress;
- }
- }
-
- if (progress > lastProgress)
- {
- // Send a progress notification.
- ALOGV("videoEditor_processClip ITEM %d Progress indication %d",
- unuseditemID, progress);
- pEnv->CallVoidMethod(pContext->engine,
- pContext->onProgressUpdateMethodId,
- unuseditemID, progress);
- lastProgress = progress;
- }
- }
-
- // Check if processing has been completed.
- if (result == completionResult)
- {
- // Set the state to the completions state.
- pContext->state = completionState;
- ALOGV("videoEditor_processClip ITEM %d STATE changed to %d",
- unuseditemID, pContext->state);
-
- // Reset progress indication, as we switch to next state
- lastProgress = 0;
-
- // Reset error code, as we start a new round of processing
- result = M4NO_ERROR;
-
- // Check if we are analyzing input
- if (pContext->state == ManualEditState_OPENED) {
- // File is opened, we must start saving it
- ALOGV("videoEditor_processClip Calling M4xVSS_SaveStart()");
- result = M4xVSS_SaveStart(pContext->engineContext,
- (M4OSA_Char*)pContext->pEditSettings->pOutputFile,
- (M4OSA_UInt32)pContext->pEditSettings->uiOutputPathSize);
- ALOGV("videoEditor_processClip ITEM %d SaveStart() returned 0x%x",
- unuseditemID, (unsigned int) result);
-
- // Set the state to saving.
- pContext->state = ManualEditState_SAVING;
- completionState = ManualEditState_SAVED;
- completionResult = M4VSS3GPP_WAR_SAVING_DONE;
- errorState = ManualEditState_SAVING_ERROR;
-
- // While saving, progress goes from 10 to 100
- // except for Kenburn clip which goes from 50 to 100
- if (M4OSA_TRUE ==
- pContext->pEditSettings->pClipList[0]->xVSS.isPanZoom) {
- progressBase = 50;
- } else {
- progressBase = 10;
- }
- }
- // Check if we encoding is ongoing
- else if (pContext->state == ManualEditState_SAVED) {
-
- // Send a progress notification.
- progress = 100;
- ALOGV("videoEditor_processClip ITEM %d Last progress indication %d",
- unuseditemID, progress);
- pEnv->CallVoidMethod(pContext->engine,
- pContext->onProgressUpdateMethodId,
- unuseditemID, progress);
-
-
- // Stop the encoding.
- ALOGV("videoEditor_processClip Calling M4xVSS_SaveStop()");
- result = M4xVSS_SaveStop(pContext->engineContext);
- ALOGV("videoEditor_processClip M4xVSS_SaveStop() returned 0x%x", result);
- }
- // Other states are unexpected
- else {
- result = M4ERR_STATE;
- ALOGE("videoEditor_processClip ITEM %d State ERROR 0x%x",
- unuseditemID, (unsigned int) result);
- }
- }
-
- // Check if an error occurred.
- if (result != M4NO_ERROR)
- {
- // Set the state to the error state.
- pContext->state = errorState;
-
- // Log the result.
- ALOGE("videoEditor_processClip ITEM %d Processing ERROR 0x%x",
- unuseditemID, (unsigned int) result);
- }
- }
-
- // Return the error result
- ALOGE("videoEditor_processClip ITEM %d END 0x%x", unuseditemID, (unsigned int) result);
- return result;
-}
-/*+ PROGRESS CB */
-
-static jint
-videoEditor_generateClip(
- JNIEnv* pEnv,
- jobject thiz,
- jobject settings) {
- bool loaded = true;
- ManualEditContext* pContext = M4OSA_NULL;
- M4OSA_ERR result = M4NO_ERROR;
-
- ALOGV("videoEditor_generateClip START");
-
- // Get the context.
- pContext = (ManualEditContext*)videoEditClasses_getContext(&loaded, pEnv, thiz);
-
- Mutex::Autolock autoLock(pContext->mLock);
-
- // Validate the settings parameter.
- videoEditJava_checkAndThrowIllegalArgumentException(&loaded, pEnv,
- (NULL == settings),
- "settings is null");
-
- // Make sure that the context was set.
- videoEditJava_checkAndThrowIllegalStateException(&loaded, pEnv,
- (M4OSA_NULL == pContext),
- "not initialized");
-
- // Load the clip settings
- ALOGV("videoEditor_generateClip Calling videoEditor_loadSettings");
- videoEditor_loadSettings(pEnv, thiz, settings);
- ALOGV("videoEditor_generateClip videoEditor_loadSettings returned");
-
- // Generate the clip
- ALOGV("videoEditor_generateClip Calling LVME_processClip");
- result = videoEditor_processClip(pEnv, thiz, 0 /*item id is unused*/);
- ALOGV("videoEditor_generateClip videoEditor_processClip returned 0x%x", result);
-
- if (pContext->state != ManualEditState_INITIALIZED) {
- // Free up memory (whatever the result)
- videoEditor_unloadSettings(pEnv, thiz);
- }
-
- ALOGV("videoEditor_generateClip END 0x%x", (unsigned int) result);
- return (jint)result;
-}
-
-static void
-videoEditor_loadSettings(
- JNIEnv* pEnv,
- jobject thiz,
- jobject settings)
-{
- bool needToBeLoaded = true;
- ManualEditContext* pContext = M4OSA_NULL;
-
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR", "videoEditor_loadSettings()");
-
- // Get the context.
- pContext = (ManualEditContext*)videoEditClasses_getContext(&needToBeLoaded,
- pEnv, thiz);
-
- // Validate the settings parameter.
- videoEditJava_checkAndThrowIllegalArgumentException(&needToBeLoaded, pEnv,
- (NULL == settings),
- "settings is null");
-
- // Make sure that the context was set.
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (M4OSA_NULL == pContext),
- "not initialized");
-
- // Check if the context is valid (required because the context is dereferenced).
- if (needToBeLoaded)
- {
- // Make sure that we are in a correct state.
- videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv,
- (pContext->state != ManualEditState_INITIALIZED),
- "settings already loaded");
-
- // Retrieve the edit settings.
- if(pContext->pEditSettings != M4OSA_NULL) {
- videoEditClasses_freeEditSettings(&pContext->pEditSettings);
- pContext->pEditSettings = M4OSA_NULL;
- }
- videoEditClasses_getEditSettings(&needToBeLoaded, pEnv, settings,
- &pContext->pEditSettings,true);
- }
-
- // Check if the edit settings could be retrieved.
- if (needToBeLoaded)
- {
- // Log the edit settings.
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR", "inside load settings");
- VIDEOEDIT_LOG_EDIT_SETTINGS(pContext->pEditSettings);
- }
- ALOGV("videoEditor_loadSettings END");
-}
-
-
-
-static void
-videoEditor_unloadSettings(
- JNIEnv* pEnv,
- jobject thiz)
-{
- bool needToBeUnLoaded = true;
- ManualEditContext* pContext = M4OSA_NULL;
- M4OSA_ERR result = M4NO_ERROR;
-
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR", "videoEditor_unloadSettings()");
-
- // Get the context.
- pContext = (ManualEditContext*)videoEditClasses_getContext(&needToBeUnLoaded, pEnv, thiz);
-
- // Make sure that the context was set.
- videoEditJava_checkAndThrowIllegalStateException(&needToBeUnLoaded, pEnv,
- (M4OSA_NULL == pContext),
- "not initialized");
-
- // Check if the context is valid (required because the context is dereferenced).
- if (needToBeUnLoaded)
- {
- ALOGV("videoEditor_unloadSettings state %d", pContext->state);
- // Make sure that we are in a correct state.
- videoEditJava_checkAndThrowIllegalStateException(&needToBeUnLoaded, pEnv,
- ((pContext->state != ManualEditState_ANALYZING ) &&
- (pContext->state != ManualEditState_ANALYZING_ERROR) &&
- (pContext->state != ManualEditState_OPENED ) &&
- (pContext->state != ManualEditState_SAVING_ERROR ) &&
- (pContext->state != ManualEditState_SAVED ) &&
- (pContext->state != ManualEditState_STOPPING ) ),
- "videoEditor_unloadSettings no load settings in progress");
- }
-
- // Check if we are in a correct state.
- if (needToBeUnLoaded)
- {
- // Check if the thread could be stopped.
- if (needToBeUnLoaded)
- {
- // Close the command.
- ALOGV("videoEditor_unloadSettings Calling M4xVSS_CloseCommand()");
- result = M4xVSS_CloseCommand(pContext->engineContext);
- ALOGV("videoEditor_unloadSettings M4xVSS_CloseCommand() returned 0x%x",
- (unsigned int)result);
-
- // Check if the command could be closed.
- videoEditJava_checkAndThrowRuntimeException(&needToBeUnLoaded, pEnv,
- (M4NO_ERROR != result), result);
- }
-
- // Check if the command could be closed.
- if (needToBeUnLoaded)
- {
- // Free the edit settings.
- //videoEditClasses_freeEditSettings(&pContext->pEditSettings);
-
- // Reset the thread result.
- pContext->threadResult = M4NO_ERROR;
-
- // Reset the thread progress.
- pContext->threadProgress = 0;
-
- // Set the state to initialized.
- pContext->state = ManualEditState_INITIALIZED;
- }
- }
-}
-
-static void
-videoEditor_stopEncoding(
- JNIEnv* pEnv,
- jobject thiz)
-{
- bool stopped = true;
- ManualEditContext* pContext = M4OSA_NULL;
- M4OSA_ERR result = M4NO_ERROR;
-
- ALOGV("videoEditor_stopEncoding START");
-
- // Get the context.
- pContext = (ManualEditContext*)videoEditClasses_getContext(&stopped, pEnv, thiz);
-
- // Change state and get Lock
- // This will ensure the generateClip function exits
- pContext->state = ManualEditState_STOPPING;
- Mutex::Autolock autoLock(pContext->mLock);
-
- // Make sure that the context was set.
- videoEditJava_checkAndThrowIllegalStateException(&stopped, pEnv,
- (M4OSA_NULL == pContext),
- "not initialized");
-
- if (stopped) {
-
- // Check if the command should be closed.
- if (pContext->state != ManualEditState_INITIALIZED)
- {
- // Close the command.
- ALOGV("videoEditor_stopEncoding Calling M4xVSS_CloseCommand()");
- result = M4xVSS_CloseCommand(pContext->engineContext);
- ALOGV("videoEditor_stopEncoding M4xVSS_CloseCommand() returned 0x%x",
- (unsigned int)result);
- }
-
- // Check if the command could be closed.
- videoEditJava_checkAndThrowRuntimeException(&stopped, pEnv,
- (M4NO_ERROR != result), result);
-
- // Free the edit settings.
- videoEditClasses_freeEditSettings(&pContext->pEditSettings);
-
- // Set the state to initialized.
- pContext->state = ManualEditState_INITIALIZED;
- }
-
-}
-
-static void
-videoEditor_release(
- JNIEnv* pEnv,
- jobject thiz)
-{
- bool released = true;
- ManualEditContext* pContext = M4OSA_NULL;
- M4OSA_ERR result = M4NO_ERROR;
-
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR", "videoEditor_release()");
-
- // Get the context.
- pContext = (ManualEditContext*)videoEditClasses_getContext(&released, pEnv, thiz);
-
- // If context is not set, return (we consider release already happened)
- if (pContext == NULL) {
- ALOGV("videoEditor_release Nothing to do, context is aleady NULL");
- return;
- }
-
-
- // Check if the context is valid (required because the context is dereferenced).
- if (released)
- {
- if (pContext->state != ManualEditState_INITIALIZED)
- {
- // Change state and get Lock
- // This will ensure the generateClip function exits if it is running
- pContext->state = ManualEditState_STOPPING;
- Mutex::Autolock autoLock(pContext->mLock);
- }
-
- // Reset the context.
- videoEditClasses_setContext(&released, pEnv, thiz, (void *)M4OSA_NULL);
-
- // Check if the command should be closed.
- if (pContext->state != ManualEditState_INITIALIZED)
- {
- // Close the command.
- ALOGV("videoEditor_release Calling M4xVSS_CloseCommand() state =%d",
- pContext->state);
- result = M4xVSS_CloseCommand(pContext->engineContext);
- ALOGV("videoEditor_release M4xVSS_CloseCommand() returned 0x%x",
- (unsigned int)result);
-
- // Check if the command could be closed.
- videoEditJava_checkAndThrowRuntimeException(&released, pEnv,
- (M4NO_ERROR != result), result);
- }
-
- // Cleanup the engine.
- ALOGV("videoEditor_release Calling M4xVSS_CleanUp()");
- result = M4xVSS_CleanUp(pContext->engineContext);
- ALOGV("videoEditor_release M4xVSS_CleanUp() returned 0x%x", (unsigned int)result);
-
- // Check if the cleanup succeeded.
- videoEditJava_checkAndThrowRuntimeException(&released, pEnv,
- (M4NO_ERROR != result), result);
-
- // Free the edit settings.
- videoEditClasses_freeEditSettings(&pContext->pEditSettings);
- pContext->pEditSettings = M4OSA_NULL;
-
-
- if(pContext->mPreviewController != M4OSA_NULL)
- {
- delete pContext->mPreviewController;
- pContext->mPreviewController = M4OSA_NULL;
- }
-
- // Free the mAudioSettings context.
- if(pContext->mAudioSettings != M4OSA_NULL)
- {
- if (pContext->mAudioSettings->pFile != NULL) {
- free(pContext->mAudioSettings->pFile);
- pContext->mAudioSettings->pFile = M4OSA_NULL;
- }
- if (pContext->mAudioSettings->pPCMFilePath != NULL) {
- free(pContext->mAudioSettings->pPCMFilePath);
- pContext->mAudioSettings->pPCMFilePath = M4OSA_NULL;
- }
-
- free(pContext->mAudioSettings);
- pContext->mAudioSettings = M4OSA_NULL;
- }
- // Free video Decoders capabilities
- if (pContext->decoders != M4OSA_NULL) {
- VideoDecoder *pDecoder = NULL;
- VideoComponentCapabilities *pComponents = NULL;
- int32_t decoderNumber = pContext->decoders->decoderNumber;
- if (pContext->decoders->decoder != NULL &&
- decoderNumber > 0) {
- pDecoder = pContext->decoders->decoder;
- for (int32_t k = 0; k < decoderNumber; k++) {
- // free each component
- ALOGV("decoder index :%d",k);
- if (pDecoder != NULL &&
- pDecoder->component != NULL &&
- pDecoder->componentNumber > 0) {
- ALOGV("component number %d",pDecoder->componentNumber);
- int32_t componentNumber =
- pDecoder->componentNumber;
-
- pComponents = pDecoder->component;
- for (int32_t i = 0; i< componentNumber; i++) {
- ALOGV("component index :%d",i);
- if (pComponents != NULL &&
- pComponents->profileLevel != NULL) {
- free(pComponents->profileLevel);
- pComponents->profileLevel = NULL;
- }
- pComponents++;
- }
- free(pDecoder->component);
- pDecoder->component = NULL;
- }
-
- pDecoder++;
- }
- free(pContext->decoders->decoder);
- pContext->decoders->decoder = NULL;
- }
- free(pContext->decoders);
- pContext->decoders = NULL;
- }
-
- videoEditor_freeContext(pEnv, &pContext);
- }
-}
-
-static int
-videoEditor_registerManualEditMethods(
- JNIEnv* pEnv)
-{
- int result = -1;
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "videoEditor_registerManualEditMethods()");
-
- // Look up the engine class
- jclass engineClazz = pEnv->FindClass(MANUAL_EDIT_ENGINE_CLASS_NAME);
-
- // Clear any resulting exceptions.
- pEnv->ExceptionClear();
-
- // Check if the engine class was found.
- if (NULL != engineClazz)
- {
- // Register all the methods.
- if (pEnv->RegisterNatives(engineClazz, gManualEditMethods,
- sizeof(gManualEditMethods) / sizeof(gManualEditMethods[0])) == JNI_OK)
- {
- // Success.
- result = 0;
- }
- }
-
- // Return the result.
- return(result);
-}
-
-/*******Audio Graph*******/
-
-static M4OSA_UInt32 getDecibelSound(M4OSA_UInt32 value)
-{
- int dbSound = 1;
-
- if (value == 0) return 0;
-
- if (value > 0x4000 && value <= 0x8000) // 32768
- dbSound = 90;
- else if (value > 0x2000 && value <= 0x4000) // 16384
- dbSound = 84;
- else if (value > 0x1000 && value <= 0x2000) // 8192
- dbSound = 78;
- else if (value > 0x0800 && value <= 0x1000) // 4028
- dbSound = 72;
- else if (value > 0x0400 && value <= 0x0800) // 2048
- dbSound = 66;
- else if (value > 0x0200 && value <= 0x0400) // 1024
- dbSound = 60;
- else if (value > 0x0100 && value <= 0x0200) // 512
- dbSound = 54;
- else if (value > 0x0080 && value <= 0x0100) // 256
- dbSound = 48;
- else if (value > 0x0040 && value <= 0x0080) // 128
- dbSound = 42;
- else if (value > 0x0020 && value <= 0x0040) // 64
- dbSound = 36;
- else if (value > 0x0010 && value <= 0x0020) // 32
- dbSound = 30;
- else if (value > 0x0008 && value <= 0x0010) //16
- dbSound = 24;
- else if (value > 0x0007 && value <= 0x0008) //8
- dbSound = 24;
- else if (value > 0x0003 && value <= 0x0007) // 4
- dbSound = 18;
- else if (value > 0x0001 && value <= 0x0003) //2
- dbSound = 12;
- else if (value > 0x000 && value == 0x0001) // 1
- dbSound = 6;
- else
- dbSound = 0;
-
- return dbSound;
-}
-
-typedef struct
-{
- M4OSA_UInt8 *m_dataAddress;
- M4OSA_UInt32 m_bufferSize;
-} M4AM_Buffer;
-
-
-M4OSA_UInt8 logLookUp[256] = {
-0,120,137,146,154,159,163,167,171,173,176,178,181,182,184,186,188,189,190,192,193,
-194,195,196,198,199,199,200,201,202,203,204,205,205,206,207,207,208,209,209,210,
-211,211,212,212,213,213,214,215,215,216,216,216,217,217,218,218,219,219,220,220,
-220,221,221,222,222,222,223,223,223,224,224,224,225,225,225,226,226,226,227,227,
-227,228,228,228,229,229,229,229,230,230,230,230,231,231,231,232,232,232,232,233,
-233,233,233,233,234,234,234,234,235,235,235,235,236,236,236,236,236,237,237,237,
-237,237,238,238,238,238,238,239,239,239,239,239,240,240,240,240,240,240,241,241,
-241,241,241,241,242,242,242,242,242,242,243,243,243,243,243,243,244,244,244,244,
-244,244,245,245,245,245,245,245,245,246,246,246,246,246,246,246,247,247,247,247,
-247,247,247,247,248,248,248,248,248,248,248,249,249,249,249,249,249,249,249,250,
-250,250,250,250,250,250,250,250,251,251,251,251,251,251,251,251,252,252,252,252,
-252,252,252,252,252,253,253,253,253,253,253,253,253,253,253,254,254,254,254,254,
-254,254,254,254,255,255,255,255,255,255,255,255,255,255,255};
-
-M4OSA_ERR M4MA_generateAudioGraphFile(JNIEnv* pEnv, M4OSA_Char* pInputFileURL,
- M4OSA_Char* pOutFileURL,
- M4OSA_UInt32 samplesPerValue,
- M4OSA_UInt32 channels,
- M4OSA_UInt32 frameDuration,
- ManualEditContext* pContext)
-{
- M4OSA_ERR err;
- M4OSA_Context outFileHandle = M4OSA_NULL;
- M4OSA_Context inputFileHandle = M4OSA_NULL;
- M4AM_Buffer bufferIn = {0, 0};
- M4OSA_UInt32 peakVolumeDbValue = 0;
- M4OSA_UInt32 samplesCountInBytes= 0 , numBytesToRead = 0, index = 0;
- M4OSA_UInt32 writeCount = 0, samplesCountBigEndian = 0, volumeValuesCount = 0;
- M4OSA_Int32 seekPos = 0;
- M4OSA_UInt32 fileSize = 0;
- M4OSA_UInt32 totalBytesRead = 0;
- M4OSA_UInt32 prevProgress = 0;
- bool threadStarted = true;
-
- int dbValue = 0;
- M4OSA_Int16 *ptr16 ;
-
- jclass engineClass = pEnv->FindClass(MANUAL_EDIT_ENGINE_CLASS_NAME);
- videoEditJava_checkAndThrowIllegalStateException(&threadStarted, pEnv,
- (M4OSA_NULL == engineClass),
- "not initialized");
-
- /* register the call back function pointer */
- pContext->onAudioGraphProgressUpdateMethodId =
- pEnv->GetMethodID(engineClass, "onAudioGraphExtractProgressUpdate", "(IZ)V");
-
-
- /* ENTER */
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR", "ENTER - M4MA_generateAudioGraphFile");
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "Audio Graph samplesPerValue %d channels %d", samplesPerValue, channels);
-
- /******************************************************************************
- OPEN INPUT AND OUTPUT FILES
- *******************************************************************************/
- err = M4OSA_fileReadOpen (&inputFileHandle, pInputFileURL, M4OSA_kFileRead);
- if (inputFileHandle == M4OSA_NULL) {
- VIDEOEDIT_LOG_ERROR(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "M4MA_generateAudioGraphFile: Cannot open input file 0x%" PRIx32, err);
- return err;
- }
-
- /* get the file size for progress */
- err = M4OSA_fileReadGetOption(inputFileHandle, M4OSA_kFileReadGetFileSize,
- (M4OSA_Void**)&fileSize);
- if ( err != M4NO_ERROR) {
- //LVMEL_LOG_ERROR("M4MA_generateAudioGraphFile : File write failed \n");
- jniThrowException(pEnv, "java/lang/IOException", "file size get option failed");
- //return -1;
- }
-
- err = M4OSA_fileWriteOpen (&outFileHandle,(M4OSA_Char*) pOutFileURL,
- M4OSA_kFileCreate | M4OSA_kFileWrite);
- if (outFileHandle == M4OSA_NULL) {
- if (inputFileHandle != NULL)
- {
- M4OSA_fileReadClose(inputFileHandle);
- }
- return err;
- }
-
- /******************************************************************************
- PROCESS THE SAMPLES
- *******************************************************************************/
- samplesCountInBytes = (samplesPerValue * sizeof(M4OSA_UInt16) * channels);
-
- bufferIn.m_dataAddress = (M4OSA_UInt8*)M4OSA_32bitAlignedMalloc(samplesCountInBytes*sizeof(M4OSA_UInt16), 0,
- (M4OSA_Char*)"AudioGraph" );
- if ( bufferIn.m_dataAddress != M4OSA_NULL) {
- bufferIn.m_bufferSize = samplesCountInBytes*sizeof(M4OSA_UInt16);
- } else {
- VIDEOEDIT_LOG_ERROR(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "M4MA_generateAudioGraphFile: Malloc failed for bufferIn.m_dataAddress 0x%" PRIx32,
- M4ERR_ALLOC);
- return M4ERR_ALLOC;
- }
- /* sample to be converted to BIG endian ; store the frame duration */
- samplesCountBigEndian = ((frameDuration>>24)&0xff) | // move byte 3 to byte 0
- ((frameDuration<<8)&0xff0000) | // move byte 1 to byte 2
- ((frameDuration>>8)&0xff00) | // move byte 2 to byte 1
- ((frameDuration<<24)&0xff000000); // byte 0 to byte 3
-
- /* write the samples per value supplied to out file */
- err = M4OSA_fileWriteData (outFileHandle, (M4OSA_MemAddr8)&samplesCountBigEndian,
- sizeof(M4OSA_UInt32) );
- if (err != M4NO_ERROR) {
- jniThrowException(pEnv, "java/lang/IOException", "file write failed");
- }
-
-
- /* write UIn32 value 0 for no of values as place holder */
- samplesCountBigEndian = 0; /* reusing local var */
- err = M4OSA_fileWriteData (outFileHandle, (M4OSA_MemAddr8)&samplesCountBigEndian,
- sizeof(M4OSA_UInt32) );
- if (err != M4NO_ERROR) {
- jniThrowException(pEnv, "java/lang/IOException", "file write failed");
- }
-
- /* loop until EOF */
- do
- {
- memset((void *)bufferIn.m_dataAddress,0,bufferIn.m_bufferSize);
-
- numBytesToRead = samplesCountInBytes;
-
- err = M4OSA_fileReadData( inputFileHandle,
- (M4OSA_MemAddr8)bufferIn.m_dataAddress,
- &numBytesToRead );
-
- if (err != M4NO_ERROR) {
- // if out value of bytes-read is 0, break
- if ( numBytesToRead == 0) {
- VIDEOEDIT_LOG_ERROR(ANDROID_LOG_INFO, "VIDEO_EDITOR", "numBytesToRead 0x%" PRIx32,
- numBytesToRead);
- break; /* stop if file is empty or EOF */
- }
- }
-
- ptr16 = (M4OSA_Int16*)bufferIn.m_dataAddress;
-
- peakVolumeDbValue = 0;
- index = 0;
-
- // loop through half the lenght frame bytes read 'cause its 16 bits samples
- while (index < (numBytesToRead / 2)) {
- /* absolute values of 16 bit sample */
- if (ptr16[index] < 0) {
- ptr16[index] = -(ptr16[index]);
- }
- peakVolumeDbValue = (peakVolumeDbValue > (M4OSA_UInt32)ptr16[index] ?\
- peakVolumeDbValue : (M4OSA_UInt32)ptr16[index]);
- index++;
- }
-
- // move 7 bits , ignore sign bit
- dbValue = (peakVolumeDbValue >> 7);
- dbValue = logLookUp[(M4OSA_UInt8)dbValue];
-
- err = M4OSA_fileWriteData (outFileHandle, (M4OSA_MemAddr8)&dbValue, sizeof(M4OSA_UInt8) );
- if (err != M4NO_ERROR) {
- VIDEOEDIT_LOG_ERROR(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "M4MA_generateAudioGraphFile : File write failed");
- break;
- }
-
- volumeValuesCount ++;
- totalBytesRead += numBytesToRead;
-
- if ((((totalBytesRead*100)/fileSize)) != prevProgress) {
- if ( (pContext->threadProgress != prevProgress) && (prevProgress != 0 )) {
- //pContext->threadProgress = prevProgress;
- //onWveformProgressUpdateMethodId(prevProgress, 0);
- //LVME_callAudioGraphOnProgressUpdate(pContext, 0, prevProgress);
- pEnv->CallVoidMethod(pContext->engine,
- pContext->onAudioGraphProgressUpdateMethodId,
- prevProgress, 0);
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR", "pContext->threadProgress %d",
- prevProgress);
- }
- }
- prevProgress = (((totalBytesRead*100)/fileSize));
-
- } while (numBytesToRead != 0);
-
- VIDEOEDIT_LOG_ERROR(ANDROID_LOG_INFO, "VIDEO_EDITOR", "loop 0x%" PRIx32, volumeValuesCount);
-
- /* if some error occured in fwrite */
- if (numBytesToRead != 0) {
- //err = -1;
- jniThrowException(pEnv, "java/lang/IOException", "numBytesToRead != 0 ; file write failed");
- }
-
- /* write the count in place holder after seek */
- seekPos = sizeof(M4OSA_UInt32);
- err = M4OSA_fileWriteSeek(outFileHandle, M4OSA_kFileSeekBeginning,
- &seekPos /* after samples per value */);
- if ( err != M4NO_ERROR) {
- jniThrowException(pEnv, "java/lang/IOException", "file seek failed");
- } else {
- volumeValuesCount = ((volumeValuesCount>>24)&0xff) | // move byte 3 to byte 0
- ((volumeValuesCount<<8)&0xff0000) | // move byte 1 to byte 2
- ((volumeValuesCount>>8)&0xff00) | // move byte 2 to byte 1
- ((volumeValuesCount<<24)&0xff000000); // byte 0 to byte 3
-
- err = M4OSA_fileWriteData (outFileHandle, (M4OSA_MemAddr8)&volumeValuesCount,
- sizeof(M4OSA_UInt32) );
- if ( err != M4NO_ERROR) {
- jniThrowException(pEnv, "java/lang/IOException", "file write failed");
- }
- }
-
- /******************************************************************************
- CLOSE AND FREE ALLOCATIONS
- *******************************************************************************/
- free(bufferIn.m_dataAddress);
- M4OSA_fileReadClose(inputFileHandle);
- M4OSA_fileWriteClose(outFileHandle);
- /* final finish callback */
- pEnv->CallVoidMethod(pContext->engine, pContext->onAudioGraphProgressUpdateMethodId, 100, 0);
-
- /* EXIT */
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR", "EXIT - M4MA_generateAudioGraphFile");
-
- return err;
-}
-
-static jint videoEditor_generateAudioWaveFormSync (JNIEnv* pEnv, jobject thiz,
- jstring pcmfilePath,
- jstring outGraphfilePath,
- jint frameDuration, jint channels,
- jint samplesCount)
-{
- M4OSA_ERR result = M4NO_ERROR;
- ManualEditContext* pContext = M4OSA_NULL;
- bool needToBeLoaded = true;
- const char *pPCMFilePath, *pStringOutAudioGraphFile;
-
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "videoEditor_generateAudioWaveFormSync() ");
-
- /* Get the context. */
- pContext = (ManualEditContext*)videoEditClasses_getContext(&needToBeLoaded, pEnv, thiz);
- if (pContext == M4OSA_NULL) {
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "videoEditor_generateAudioWaveFormSync() - pContext is NULL ");
- }
-
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "videoEditor_generateAudioWaveFormSync Retrieving pStringOutAudioGraphFile");
-
- pPCMFilePath = pEnv->GetStringUTFChars(pcmfilePath, NULL);
- if (pPCMFilePath == M4OSA_NULL) {
- jniThrowException(pEnv, "java/lang/RuntimeException",
- "Input string PCMFilePath is null");
- result = M4ERR_PARAMETER;
- goto out;
- }
-
- pStringOutAudioGraphFile = pEnv->GetStringUTFChars(outGraphfilePath, NULL);
- if (pStringOutAudioGraphFile == M4OSA_NULL) {
- jniThrowException(pEnv, "java/lang/RuntimeException",
- "Input string outGraphfilePath is null");
- result = M4ERR_PARAMETER;
- goto out2;
- }
-
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "videoEditor_generateAudioWaveFormSync Generate the waveform data %s %d %d %d",
- pStringOutAudioGraphFile, frameDuration, channels, samplesCount);
-
- /* Generate the waveform */
- result = M4MA_generateAudioGraphFile(pEnv, (M4OSA_Char*) pPCMFilePath,
- (M4OSA_Char*) pStringOutAudioGraphFile,
- (M4OSA_UInt32) samplesCount,
- (M4OSA_UInt32) channels,
- (M4OSA_UInt32)frameDuration,
- pContext);
-
- pEnv->ReleaseStringUTFChars(outGraphfilePath, pStringOutAudioGraphFile);
-
-out2:
- if (pPCMFilePath != NULL) {
- pEnv->ReleaseStringUTFChars(pcmfilePath, pPCMFilePath);
- }
-
-out:
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR",
- "videoEditor_generateAudioWaveFormSync pContext->bSkipState ");
-
- return (jint)result;
-}
-
-/******** End Audio Graph *******/
-jint JNI_OnLoad(
- JavaVM* pVm,
- void* pReserved)
-{
- void* pEnv = NULL;
- bool needToBeInitialized = true;
- jint result = -1;
-
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR", "JNI_OnLoad()");
-
- // Check the JNI version.
- if (pVm->GetEnv(&pEnv, JNI_VERSION_1_4) == JNI_OK)
- {
- // Register the manual edit JNI methods.
- if (videoEditor_registerManualEditMethods((JNIEnv*)pEnv) == 0)
- {
- // Initialize the classes.
- videoEditClasses_init(&needToBeInitialized, (JNIEnv*)pEnv);
- if (needToBeInitialized)
- {
- // Success, return valid version number.
- result = JNI_VERSION_1_4;
- }
- }
- }
-
- // Return the result.
- return(result);
-}
-
diff --git a/media/jni/mediaeditor/VideoEditorOsal.cpp b/media/jni/mediaeditor/VideoEditorOsal.cpp
deleted file mode 100644
index c12b1f5..0000000
--- a/media/jni/mediaeditor/VideoEditorOsal.cpp
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "VideoEditorOsal"
-
-#include <VideoEditorJava.h>
-#include <VideoEditorLogging.h>
-#include <VideoEditorOsal.h>
-
-extern "C" {
-#include <M4OSA_Clock.h>
-#include <M4OSA_CharStar.h>
-#include <M4OSA_FileCommon.h>
-#include <M4OSA_FileReader.h>
-#include <M4OSA_FileWriter.h>
-#include <M4OSA_Memory.h>
-#include <M4OSA_Thread.h>
-#include <M4xVSS_API.h>
-#include <M4VSS3GPP_ErrorCodes.h>
-#include <M4MCS_ErrorCodes.h>
-#include <M4READER_Common.h>
-#include <M4WRITER_common.h>
-#include <M4VSS3GPP_API.h>
-#include <M4DECODER_Common.h>
-};
-
-
-#define VIDEOEDIT_OSAL_RESULT_STRING_MAX (32)
-
-#define VIDEOEDIT_OSAL_RESULT_INIT(m_result) { m_result, #m_result }
-
-
-typedef struct
-{
- M4OSA_ERR result;
- const char* pName;
-} VideoEdit_Osal_Result;
-
-static const VideoEdit_Osal_Result gkRESULTS[] =
-{
- // M4OSA_Clock.h
- VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_TIMESCALE_TOO_BIG ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_CLOCK_BAD_REF_YEAR ),
-
- // M4OSA_Error.h
- VIDEOEDIT_OSAL_RESULT_INIT(M4NO_ERROR ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_PARAMETER ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_STATE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_ALLOC ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_BAD_CONTEXT ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_CONTEXT_FAILED ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_BAD_STREAM_ID ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_BAD_OPTION_ID ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_WRITE_ONLY ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_READ_ONLY ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_NOT_IMPLEMENTED ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_UNSUPPORTED_MEDIA_TYPE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_NO_DATA_YET ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_NO_MORE_STREAM ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_INVALID_TIME ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_NO_MORE_AU ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_TIME_OUT ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_BUFFER_FULL ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_REDIRECT ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_TOO_MUCH_STREAMS ),
-
- // M4OSA_FileCommon.h
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_FILE_NOT_FOUND ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_FILE_LOCKED ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_FILE_BAD_MODE_ACCESS ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_FILE_INVALID_POSITION ),
-
- // M4OSA_Thread.h
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_THREAD_NOT_STARTED ),
-
- // M4xVSS_API.h
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_WAR_ANALYZING_DONE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_WAR_PREVIEW_READY ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_WAR_SAVING_DONE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_WAR_TRANSCODING_NECESSARY ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_WAR_OUTPUTFILESIZE_EXCEED ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_JPG_TOO_BIG ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4xVSSWAR_BUFFER_OUT_TOO_SMALL ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4xVSSERR_NO_MORE_SPACE ),
-
- // M4VSS3GPP_ErrorCodes.h
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_FILE_TYPE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_EFFECT_KIND ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_VIDEO_EFFECT_TYPE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_AUDIO_EFFECT_TYPE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_VIDEO_TRANSITION_TYPE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_AUDIO_TRANSITION_TYPE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_VIDEO_ENCODING_FRAME_RATE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EXTERNAL_EFFECT_NULL ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EXTERNAL_TRANSITION_NULL ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_BEGIN_CUT_LARGER_THAN_DURATION ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_BEGIN_CUT_LARGER_THAN_END_CUT ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_OVERLAPPING_TRANSITIONS ),
-#ifdef M4VSS3GPP_ERR_ANALYSIS_DATA_SIZE_TOO_SMALL
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_ANALYSIS_DATA_SIZE_TOO_SMALL ),
-#endif
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_3GPP_FILE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_UNSUPPORTED_INPUT_VIDEO_FORMAT ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_UNSUPPORTED_INPUT_AUDIO_FORMAT ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_AMR_EDITING_UNSUPPORTED ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INPUT_VIDEO_AU_TOO_LARGE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INPUT_AUDIO_AU_TOO_LARGE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INPUT_AUDIO_CORRUPTED_AU ),
-#ifdef M4VSS3GPP_ERR_INPUT_AUDIO_CORRUPTED_AMR_AU
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INPUT_AUDIO_CORRUPTED_AMR_AU ),
-#endif
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_ENCODER_ACCES_UNIT_ERROR ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EDITING_UNSUPPORTED_VIDEO_FORMAT ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EDITING_UNSUPPORTED_H263_PROFILE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EDITING_UNSUPPORTED_MPEG4_PROFILE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EDITING_UNSUPPORTED_MPEG4_RVLC ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EDITING_UNSUPPORTED_AUDIO_FORMAT ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EDITING_NO_SUPPORTED_STREAM_IN_FILE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_EDITING_NO_SUPPORTED_VIDEO_STREAM_IN_FILE),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_CLIP_ANALYSIS_VERSION ),
-#ifdef M4VSS3GPP_ERR_INVALID_CLIP_ANALYSIS_PLATFORM
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INVALID_CLIP_ANALYSIS_PLATFORM ),
-#endif
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INCOMPATIBLE_VIDEO_FORMAT ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INCOMPATIBLE_VIDEO_FRAME_SIZE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INCOMPATIBLE_VIDEO_TIME_SCALE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INCOMPATIBLE_VIDEO_DATA_PARTITIONING ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_UNSUPPORTED_MP3_ASSEMBLY ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_WAR_INCOMPATIBLE_AUDIO_STREAM_TYPE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_WAR_INCOMPATIBLE_AUDIO_NB_OF_CHANNELS ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_WAR_INCOMPATIBLE_AUDIO_SAMPLING_FREQUENCY ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_NO_SUPPORTED_STREAM_IN_FILE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_ADDVOLUME_EQUALS_ZERO ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_ADDCTS_HIGHER_THAN_VIDEO_DURATION ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_UNDEFINED_AUDIO_TRACK_FILE_FORMAT ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_UNSUPPORTED_ADDED_AUDIO_STREAM ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_AUDIO_MIXING_UNSUPPORTED ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_FEATURE_UNSUPPORTED_WITH_AUDIO_TRACK ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_AUDIO_CANNOT_BE_MIXED ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INPUT_CLIP_IS_NOT_A_3GPP ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_BEGINLOOP_HIGHER_ENDLOOP ),
-#ifdef M4VSS3GPP_ERR_AUDIO_MIXING_MP3_UNSUPPORTED
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_AUDIO_MIXING_MP3_UNSUPPORTED ),
-#endif
-#ifdef M4VSS3GPP_ERR_FEATURE_UNSUPPORTED_WITH_AAC
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_FEATURE_UNSUPPORTED_WITH_AAC ),
-#endif
-#ifdef M4VSS3GPP_ERR_ONLY_AMRNB_INPUT_CAN_BE_MIXED
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_ONLY_AMRNB_INPUT_CAN_BE_MIXED ),
-#endif
-#ifdef M4VSS3GPP_ERR_FEATURE_UNSUPPORTED_WITH_EVRC
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_FEATURE_UNSUPPORTED_WITH_EVRC ),
-#endif
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_H263_PROFILE_NOT_SUPPORTED ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_NO_SUPPORTED_VIDEO_STREAM_IN_FILE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_INTERNAL_STATE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_LUMA_FILTER_ERROR ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_TRANSITION_FILTER_ERROR ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_AUDIO_DECODER_INIT_FAILED ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_AUDIO_DECODED_PCM_SIZE_ISSUE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4VSS3GPP_ERR_OUTPUT_FILE_TYPE_ERROR ),
-
- // M4MCS_ErrorCodes.h
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_WAR_TRANSCODING_DONE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_WAR_MEDIATYPE_NOT_SUPPORTED ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_INPUT_FILE_CONTAINS_NO_SUPPORTED_STREAM ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_INVALID_INPUT_FILE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_UNDEFINED_OUTPUT_VIDEO_FORMAT ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_UNDEFINED_OUTPUT_VIDEO_FRAME_SIZE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_UNDEFINED_OUTPUT_VIDEO_FRAME_RATE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_UNDEFINED_OUTPUT_AUDIO_FORMAT ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_INVALID_VIDEO_FRAME_SIZE_FOR_H263 ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_INVALID_VIDEO_FRAME_RATE_FOR_H263 ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_DURATION_IS_NULL ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_H263_FORBIDDEN_IN_MP4_FILE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_H263_PROFILE_NOT_SUPPORTED ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_INVALID_AAC_SAMPLING_FREQUENCY ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_AUDIO_CONVERSION_FAILED ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_BEGIN_CUT_LARGER_THAN_DURATION ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_BEGIN_CUT_EQUALS_END_CUT ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_END_CUT_SMALLER_THAN_BEGIN_CUT ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_MAXFILESIZE_TOO_SMALL ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_VIDEOBITRATE_TOO_LOW ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_AUDIOBITRATE_TOO_LOW ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_VIDEOBITRATE_TOO_HIGH ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_AUDIOBITRATE_TOO_HIGH ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_OUTPUT_FILE_SIZE_TOO_SMALL ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_NOMORE_SPACE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4MCS_ERR_FILE_DRM_PROTECTED ),
-
- // M4READER_Common.h
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_READER_UNKNOWN_STREAM_TYPE ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_READER_NO_METADATA ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_READER_INFORMATION_NOT_PRESENT ),
-
- // M4WRITER_Common.h
- VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_WRITER_STOP_REQ ),
- // M4DECODER_Common.h
- VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_VIDEORENDERER_NO_NEW_FRAME ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4WAR_DEBLOCKING_FILTER_NOT_IMPLEMENTED ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_DECODER_H263_PROFILE_NOT_SUPPORTED ),
- VIDEOEDIT_OSAL_RESULT_INIT(M4ERR_DECODER_H263_NOT_BASELINE )
-};
-
-static const int gkRESULTS_COUNT = (sizeof(gkRESULTS) / sizeof(VideoEdit_Osal_Result));
-
-#ifdef OSAL_MEM_LEAK_DEBUG
-static int gAllocatedBlockCount = 0;
-#endif
-
-const char*
-videoEditOsal_getResultString(
- M4OSA_ERR result)
-{
- static char string[VIDEOEDIT_OSAL_RESULT_STRING_MAX] = "";
- const char* pString = M4OSA_NULL;
- int index = 0;
-
- // Loop over the list with constants.
- for (index = 0;
- ((M4OSA_NULL == pString) && (index < gkRESULTS_COUNT));
- index++)
- {
- // Check if the specified result matches.
- if (result == gkRESULTS[index].result)
- {
- // Set the description.
- pString = gkRESULTS[index].pName;
- }
- }
-
- // Check if no result was found.
- if (M4OSA_NULL == pString)
- {
- // Set the description to a default value.
- M4OSA_chrSPrintf((M4OSA_Char *)string, sizeof(string) - 1,
- (M4OSA_Char*)"<unknown(0x%08X)>", result);
- pString = string;
- }
-
- // Return the result.
- return(pString);
-}
-
-void *
-videoEditOsal_alloc(
- bool* pResult,
- JNIEnv* pEnv,
- size_t size,
- const char* pDescription)
-{
- void *pData = M4OSA_NULL;
-
- // Check if the previous action succeeded.
- if (*pResult)
- {
- // Allocate memory for the settings.
- pData = (M4VSS3GPP_EditSettings*)M4OSA_32bitAlignedMalloc(size, 0, (M4OSA_Char*)pDescription);
- if (M4OSA_NULL != pData)
- {
- // Reset the allocated memory.
- memset((void *)pData, 0,size);
-#ifdef OSAL_MEM_LEAK_DEBUG
- // Update the allocated block count.
- gAllocatedBlockCount++;
-#endif
- }
- else
- {
- // Reset the result flag.
- (*pResult) = false;
-
- // Log the error.
- VIDEOEDIT_LOG_ERROR(ANDROID_LOG_ERROR, "VIDEO_EDITOR_OSAL", "videoEditOsal_alloc,\
- error: unable to allocate memory for %s", pDescription);
-
- // Throw an exception.
- jniThrowException(pEnv, "java/lang/OutOfMemoryError", "unable to allocate memory");
- }
- }
-
- // Return the allocated memory.
- return(pData);
-}
-
-void
-videoEditOsal_free(
- void* pData)
-{
- // Check if memory was allocated.
- if (M4OSA_NULL != pData)
- {
- VIDEOEDIT_LOG_FUNCTION(ANDROID_LOG_INFO, "VIDEO_EDITOR_OSAL", "videoEditOsal_free()");
-
- // Log the API call.
- VIDEOEDIT_LOG_API(ANDROID_LOG_INFO, "VIDEO_EDITOR_OSAL", "free");
-
- // Free the memory.
- free(pData);
-#ifdef OSAL_MEM_LEAK_DEBUG
- // Update the allocated block count.
- gAllocatedBlockCount--;
-
- // Log the number of allocated blocks.
- VIDEOEDIT_LOG_ALLOCATION(ANDROID_LOG_ERROR, "VIDEO_EDITOR_OSAL", "allocated, %d blocks",\
- gAllocatedBlockCount);
-#endif
- }
-}
-
-
-void
-videoEditOsal_getFilePointers ( M4OSA_FileReadPointer *pOsaFileReadPtr,
- M4OSA_FileWriterPointer *pOsaFileWritePtr)
-{
- if (pOsaFileReadPtr != M4OSA_NULL)
- {
- // Initialize the filereader function pointers.
- pOsaFileReadPtr->openRead = M4OSA_fileReadOpen;
- pOsaFileReadPtr->readData = M4OSA_fileReadData;
- pOsaFileReadPtr->seek = M4OSA_fileReadSeek;
- pOsaFileReadPtr->closeRead = M4OSA_fileReadClose;
- pOsaFileReadPtr->setOption = M4OSA_fileReadSetOption;
- pOsaFileReadPtr->getOption = M4OSA_fileReadGetOption;
- }
-
- if (pOsaFileWritePtr != M4OSA_NULL)
- {
- // Initialize the filewriter function pointers.
- pOsaFileWritePtr->openWrite = M4OSA_fileWriteOpen;
- pOsaFileWritePtr->writeData = M4OSA_fileWriteData;
- pOsaFileWritePtr->seek = M4OSA_fileWriteSeek;
- pOsaFileWritePtr->Flush = M4OSA_fileWriteFlush;
- pOsaFileWritePtr->closeWrite = M4OSA_fileWriteClose;
- pOsaFileWritePtr->setOption = M4OSA_fileWriteSetOption;
- pOsaFileWritePtr->getOption = M4OSA_fileWriteGetOption;
- }
-}
-
diff --git a/media/jni/mediaeditor/VideoEditorOsal.h b/media/jni/mediaeditor/VideoEditorOsal.h
deleted file mode 100644
index 7a6f5ea..0000000
--- a/media/jni/mediaeditor/VideoEditorOsal.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef VIDEO_EDITOR_OSAL_H
-#define VIDEO_EDITOR_OSAL_H
-
-#include <jni.h>
-#include <JNIHelp.h>
-
-extern "C" {
-#include <M4OSA_Error.h>
-#include <M4OSA_Thread.h>
-#include <M4OSA_FileReader.h>
-#include <M4OSA_FileWriter.h>
-};
-
-const char*
-videoEditOsal_getResultString(
- M4OSA_ERR result);
-
-void*
-videoEditOsal_alloc(
- bool* pResult,
- JNIEnv* pEnv,
- size_t size,
- const char* pDescription);
-
-void
-videoEditOsal_free(
- void* pData);
-
-void
-videoEditOsal_startThread(
- bool* pResult,
- JNIEnv* pEnv,
- int stackSize,
- M4OSA_ThreadDoIt callback,
- M4OSA_Context* pContext,
- void* pParam);
-
-void
-videoEditOsal_stopThread(
- bool* pResult,
- JNIEnv* pEnv,
- M4OSA_Context* pContext);
-
-void
-videoEditOsal_getFilePointers ( M4OSA_FileReadPointer *pOsaFileReadPtr,
- M4OSA_FileWriterPointer *pOsaFileWritePtr);
-
-#endif // VIDEO_EDITOR_OSAL_H
-
diff --git a/media/jni/mediaeditor/VideoEditorPropertiesMain.cpp b/media/jni/mediaeditor/VideoEditorPropertiesMain.cpp
deleted file mode 100644
index ae1a80e..0000000
--- a/media/jni/mediaeditor/VideoEditorPropertiesMain.cpp
+++ /dev/null
@@ -1,533 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "VideoEditorPropertiesMain"
-
-#include <dlfcn.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <utils/Log.h>
-#include <utils/threads.h>
-#include <VideoEditorClasses.h>
-#include <VideoEditorJava.h>
-#include <VideoEditorOsal.h>
-#include <VideoEditorLogging.h>
-#include <VideoEditorOsal.h>
-
-extern "C" {
-#include <M4OSA_Clock.h>
-#include <M4OSA_CharStar.h>
-#include <M4OSA_Error.h>
-#include <M4OSA_FileCommon.h>
-#include <M4OSA_FileReader.h>
-#include <M4OSA_FileWriter.h>
-#include <M4OSA_Memory.h>
-#include <M4OSA_Thread.h>
-#include <M4VSS3GPP_API.h>
-#include <M4VSS3GPP_ErrorCodes.h>
-#include <M4MCS_API.h>
-#include <M4MCS_ErrorCodes.h>
-#include <M4READER_Common.h>
-#include <M4WRITER_common.h>
-#include <M4DECODER_Common.h>
-#include <M4AD_Common.h>
-};
-
-extern "C" M4OSA_ERR M4MCS_open_normalMode(
- M4MCS_Context pContext,
- M4OSA_Void* pFileIn,
- M4VIDEOEDITING_FileType InputFileType,
- M4OSA_Void* pFileOut,
- M4OSA_Void* pTempFile);
-
-jobject videoEditProp_getProperties(
- JNIEnv* pEnv,
- jobject thiz,
- jstring file);
-
-static void
-getFileAndMediaTypeFromExtension (
- M4OSA_Char* pExtension,
- VideoEditClasses_FileType *pFileType,
- M4VIDEOEDITING_FileType *pClipType);
-
-static M4OSA_ERR
-getClipProperties( JNIEnv* pEnv,
- jobject thiz,
- M4OSA_Char* pFile,
- M4VIDEOEDITING_FileType clipType,
- M4VIDEOEDITING_ClipProperties* pClipProperties);
-
-M4OSA_UInt32
-VideoEdit_chrCompare(M4OSA_Char* pStrIn1,
- M4OSA_Char* pStrIn2,
- M4OSA_Int32* pCmpResult);
-
-jobject videoEditProp_getProperties(
- JNIEnv* pEnv,
- jobject thiz,
- jstring file)
-{
- bool gotten = true;
- M4OSA_Char* pFile = M4OSA_NULL;
- M4OSA_Char* pExtension = M4OSA_NULL;
- M4OSA_UInt32 index = 0;
- M4OSA_Int32 cmpResult = 0;
- VideoEditPropClass_Properties* pProperties = M4OSA_NULL;
- M4VIDEOEDITING_ClipProperties* pClipProperties = M4OSA_NULL;
- M4OSA_ERR result = M4NO_ERROR;
- M4MCS_Context context = M4OSA_NULL;
- M4OSA_FilePosition size = 0;
- M4OSA_UInt32 width = 0;
- M4OSA_UInt32 height = 0;
- jobject properties = NULL;
- M4OSA_Context pOMXContext = M4OSA_NULL;
- M4DECODER_VideoInterface* pOMXVidDecoderInterface = M4OSA_NULL;
- M4AD_Interface* pOMXAudDecoderInterface = M4OSA_NULL;
-
- bool initialized = true;
- VideoEditClasses_FileType fileType = VideoEditClasses_kFileType_Unsupported;
- M4VIDEOEDITING_FileType clipType = M4VIDEOEDITING_kFileType_Unsupported;
-
- VIDEOEDIT_LOG_API(
- ANDROID_LOG_INFO, "VIDEO_EDITOR_PROPERTIES",
- "videoEditProp_getProperties()");
-
- // Initialize the classes.
- videoEditPropClass_init(&initialized, (JNIEnv*)pEnv);
-
- // Validate the tempPath parameter.
- videoEditJava_checkAndThrowIllegalArgumentException(
- &gotten, pEnv, (NULL == file), "file is null");
-
- // Get the file path.
- pFile = (M4OSA_Char *)videoEditJava_getString(
- &gotten, pEnv, file, NULL, M4OSA_NULL);
-
- result = M4OSA_fileReadOpen(&context, (M4OSA_Void*)pFile, M4OSA_kFileRead);
-
- if(M4NO_ERROR != result) {
- // Free the file path.
- videoEditOsal_free(pFile);
- pFile = M4OSA_NULL;
- }
-
- videoEditJava_checkAndThrowIllegalArgumentException(&gotten, pEnv,
- (M4NO_ERROR != result), "file not found");
-
- // Close the file and free the file context
- if (context != NULL) {
- result = M4OSA_fileReadClose(context);
- context = M4OSA_NULL;
- }
-
- // Return if Error
- if (M4NO_ERROR != result) {
- return (properties); // NULL
- }
-
- // Check if the file path is valid.
- if (gotten)
- {
- // Retrieve the extension.
- pExtension = (M4OSA_Char *)strrchr((const char *)pFile, (int)'.');
- if (M4OSA_NULL != pExtension)
- {
- // Skip the dot.
- pExtension++;
-
- // Get the file type and Media type from extension
- getFileAndMediaTypeFromExtension(
- pExtension ,&fileType, &clipType);
- }
- }
-
- // Check if the file type could be determined.
- videoEditJava_checkAndThrowIllegalArgumentException(
- &gotten, pEnv,
- (VideoEditClasses_kFileType_Unsupported == fileType),
- "file type is not supported");
-
- // Allocate a new properties structure.
- pProperties = (VideoEditPropClass_Properties*)videoEditOsal_alloc(
- &gotten, pEnv,
- sizeof(VideoEditPropClass_Properties), "Properties");
-
- // Check if the context is valid and allocation succeeded
- // (required because of dereferencing of pProperties).
- if (gotten)
- {
- // Check if this type of file needs to be analyzed using MCS.
- if ((VideoEditClasses_kFileType_MP3 == fileType) ||
- (VideoEditClasses_kFileType_MP4 == fileType) ||
- (VideoEditClasses_kFileType_3GPP == fileType) ||
- (VideoEditClasses_kFileType_AMR == fileType) ||
- (VideoEditClasses_kFileType_PCM == fileType) ||
- (VideoEditClasses_kFileType_M4V == fileType))
- {
- // Allocate a new clip properties structure.
- pClipProperties =
- (M4VIDEOEDITING_ClipProperties*)videoEditOsal_alloc(
- &gotten, pEnv,
- sizeof(M4VIDEOEDITING_ClipProperties), "ClipProperties");
-
- // Check if allocation succeeded (required because of
- // dereferencing of pClipProperties).
- if (gotten)
- {
- // Log the API call.
- VIDEOEDIT_LOG_API(
- ANDROID_LOG_INFO, "VIDEO_EDITOR_PROPERTIES",
- "getClipProperties");
-
- // Get Video clip properties
- result = getClipProperties(
- pEnv, thiz, pFile, clipType, pClipProperties);
-
- if (M4MCS_ERR_FILE_DRM_PROTECTED == result) {
- // Check if the creation succeeded.
- videoEditJava_checkAndThrowIllegalArgumentException(
- &gotten, pEnv,(M4NO_ERROR != result),
- "Invalid File - DRM Protected ");
- } else {
- // Check if the creation succeeded.
- videoEditJava_checkAndThrowIllegalArgumentException(
- &gotten, pEnv,(M4NO_ERROR != result),
- "Invalid File or File not found ");
- }
-
-#ifdef USE_SOFTWARE_DECODER
- /**
- * Input clip with non-multiples of 16 is not supported.
- */
- if ( (pClipProperties->uiVideoWidth %16)
- || (pClipProperties->uiVideoHeight %16) )
- {
- result = M4MCS_ERR_INPUT_VIDEO_SIZE_NON_X16;
- videoEditJava_checkAndThrowIllegalArgumentException(
- &gotten, pEnv, (M4NO_ERROR != result),
- "non x16 input video frame size is not supported");
- }
-#endif /* USE_SOFTWARE_DECODER */
- }
-
- // Check if the properties could be retrieved.
- if (gotten)
- {
- // Set the properties.
- pProperties->uiClipDuration = pClipProperties->uiClipDuration;
- if (M4VIDEOEDITING_kFileType_Unsupported == pClipProperties->FileType)
- {
- pProperties->FileType = VideoEditClasses_kFileType_Unsupported;
- }
- else
- {
- pProperties->FileType = fileType;
- }
- pProperties->VideoStreamType = pClipProperties->VideoStreamType;
- pProperties->uiClipVideoDuration = pClipProperties->uiClipVideoDuration;
- pProperties->uiVideoBitrate = pClipProperties->uiVideoBitrate;
- pProperties->uiVideoWidth = pClipProperties->uiVideoWidth;
- pProperties->uiVideoHeight = pClipProperties->uiVideoHeight;
- pProperties->fAverageFrameRate = pClipProperties->fAverageFrameRate;
- pProperties->uiVideoProfile = pClipProperties->uiVideoProfile;
- pProperties->uiVideoLevel = pClipProperties->uiVideoLevel;
- // Set profile and level support to TRUE, pending check
- pProperties->bProfileSupported = M4OSA_TRUE;
- pProperties->bLevelSupported = M4OSA_TRUE;
- pProperties->AudioStreamType = pClipProperties->AudioStreamType;
- pProperties->uiClipAudioDuration = pClipProperties->uiClipAudioDuration;
- pProperties->uiAudioBitrate = pClipProperties->uiAudioBitrate;
- pProperties->uiNbChannels = pClipProperties->uiNbChannels;
- pProperties->uiSamplingFrequency = pClipProperties->uiSamplingFrequency;
- pProperties->uiRotation = pClipProperties->videoRotationDegrees;
-
- }
-
- // Free the clip properties.
- videoEditOsal_free(pClipProperties);
- pClipProperties = M4OSA_NULL;
- }
- else if ((VideoEditClasses_kFileType_JPG == fileType) ||
- (VideoEditClasses_kFileType_GIF == fileType) ||
- (VideoEditClasses_kFileType_PNG == fileType))
- {
- pProperties->uiClipDuration = 0;
- pProperties->FileType = fileType;
- pProperties->VideoStreamType = M4VIDEOEDITING_kNoneVideo;
- pProperties->uiClipVideoDuration = 0;
- pProperties->uiVideoBitrate = 0;
- pProperties->uiVideoWidth = width;
- pProperties->uiVideoHeight = height;
- pProperties->fAverageFrameRate = 0.0f;
- pProperties->uiVideoProfile = M4VIDEOEDITING_VIDEO_UNKNOWN_PROFILE;
- pProperties->uiVideoLevel = M4VIDEOEDITING_VIDEO_UNKNOWN_LEVEL;
- pProperties->AudioStreamType = M4VIDEOEDITING_kNoneAudio;
- pProperties->uiClipAudioDuration = 0;
- pProperties->uiAudioBitrate = 0;
- pProperties->uiNbChannels = 0;
- pProperties->uiSamplingFrequency = 0;
-
- // Added for Handling invalid paths and non existent image files
- // Open the file for reading.
- result = M4OSA_fileReadOpen(&context, (M4OSA_Void*)pFile, M4OSA_kFileRead);
- if (M4NO_ERROR != result)
- {
- pProperties->FileType = VideoEditClasses_kFileType_Unsupported;
- }
- result = M4OSA_fileReadClose(context);
- context = M4OSA_NULL;
- }
- }
-
- if (M4NO_ERROR == result) {
- // Create a properties object.
- videoEditPropClass_createProperties(&gotten, pEnv, pProperties, &properties);
-
- // Log the properties.
- VIDEOEDIT_PROP_LOG_PROPERTIES(pProperties);
- }
-
- // Free the properties.
- videoEditOsal_free(pProperties);
- pProperties = M4OSA_NULL;
-
- // Free the file path.
- videoEditOsal_free(pFile);
- pFile = M4OSA_NULL;
-
- // Return the Properties object.
- return(properties);
-}
-
-static void getFileAndMediaTypeFromExtension (
- M4OSA_Char *pExtension,
- VideoEditClasses_FileType *pFileType,
- M4VIDEOEDITING_FileType *pClipType)
-{
- M4OSA_Char extension[5] = {0, 0, 0, 0, 0};
- VideoEditClasses_FileType fileType =
- VideoEditClasses_kFileType_Unsupported;
-
- M4VIDEOEDITING_FileType clipType =
- M4VIDEOEDITING_kFileType_Unsupported;
-
- M4OSA_UInt32 index = 0;
- M4OSA_ERR result = M4NO_ERROR;
- M4OSA_Int32 cmpResult = 0;
- M4OSA_UInt32 extLength = strlen((const char *)pExtension);
-
- // Assign default
- *pFileType = VideoEditClasses_kFileType_Unsupported;
- *pClipType = M4VIDEOEDITING_kFileType_Unsupported;
-
- // Check if the length of the extension is valid.
- if ((3 == extLength) || (4 == extLength))
- {
- // Convert the extension to lowercase.
- for (index = 0; index < extLength ; index++)
- {
- extension[index] = tolower((int)pExtension[index]);
- }
-
- // Check if the extension is ".mp3".
- if (!(VideoEdit_chrCompare(extension, (M4OSA_Char*)"mp3", &cmpResult)))
- {
- *pFileType = VideoEditClasses_kFileType_MP3;
- *pClipType = M4VIDEOEDITING_kFileType_MP3;
- }
- // Check if the extension is ".mp4".
- else if (!(VideoEdit_chrCompare(extension, (M4OSA_Char*)"mp4", &cmpResult)))
- {
- *pFileType = VideoEditClasses_kFileType_MP4;
- *pClipType = M4VIDEOEDITING_kFileType_MP4;
- }
- // Check if the extension is ".3gp".
- else if (!(VideoEdit_chrCompare(extension, (M4OSA_Char*)"3gp", &cmpResult)))
- {
- *pFileType = VideoEditClasses_kFileType_3GPP;
- *pClipType = M4VIDEOEDITING_kFileType_3GPP;
- }
- // Check if the extension is ".m4a".
- else if (!(VideoEdit_chrCompare(extension, (M4OSA_Char*)"m4a", &cmpResult)))
- {
- *pFileType = VideoEditClasses_kFileType_3GPP;
- *pClipType = M4VIDEOEDITING_kFileType_3GPP;
- }
- // Check if the extension is ".3gpp".
- else if (!(VideoEdit_chrCompare(extension, (M4OSA_Char*)"3gpp", &cmpResult)))
- {
- *pFileType = VideoEditClasses_kFileType_3GPP;
- *pClipType = M4VIDEOEDITING_kFileType_3GPP;
- }
- // Check if the extension is ".amr".
- else if (!(VideoEdit_chrCompare(extension, (M4OSA_Char*)"amr", &cmpResult)))
- {
- *pFileType = VideoEditClasses_kFileType_AMR;
- *pClipType = M4VIDEOEDITING_kFileType_AMR;
- }
- // Check if the extension is ".pcm".
- else if (!(VideoEdit_chrCompare(extension, (M4OSA_Char*)"pcm", &cmpResult)))
- {
- *pFileType = VideoEditClasses_kFileType_PCM;
- *pClipType = M4VIDEOEDITING_kFileType_PCM;
- }
- // Check if the extension is ".jpg".
- else if (!(VideoEdit_chrCompare(extension, (M4OSA_Char*)"jpg", &cmpResult)))
- {
- *pFileType = VideoEditClasses_kFileType_JPG;
- }
- // Check if the extension is ".jpeg".
- else if (!(VideoEdit_chrCompare(extension, (M4OSA_Char*)"jpeg", &cmpResult)))
- {
- *pFileType = VideoEditClasses_kFileType_JPG;
- }
- // Check if the extension is ".gif".
- else if (!(VideoEdit_chrCompare(extension, (M4OSA_Char*)"gif", &cmpResult)))
- {
- *pFileType = VideoEditClasses_kFileType_GIF;
- }
- // Check if the extension is ".png".
- else if (!(VideoEdit_chrCompare(extension, (M4OSA_Char*)"png", &cmpResult)))
- {
- *pFileType = VideoEditClasses_kFileType_PNG;
- }
- // Check if the extension is ".m4v".
- else if (!(VideoEdit_chrCompare(extension, (M4OSA_Char*)"m4v", &cmpResult)))
- {
- *pFileType = VideoEditClasses_kFileType_M4V;
- *pClipType = M4VIDEOEDITING_kFileType_M4V;
- }
- }
-}
-
-static M4OSA_ERR getClipProperties(
- JNIEnv* pEnv,
- jobject thiz,
- M4OSA_Char* pFile,
- M4VIDEOEDITING_FileType clipType,
- M4VIDEOEDITING_ClipProperties* pClipProperties)
-{
- bool gotten = true;
- M4OSA_ERR result = M4NO_ERROR;
- M4OSA_ERR resultAbort = M4NO_ERROR;
- M4MCS_Context context = M4OSA_NULL;
-
- M4OSA_FileReadPointer fileReadPtr =
- { M4OSA_NULL, M4OSA_NULL, M4OSA_NULL,
- M4OSA_NULL, M4OSA_NULL, M4OSA_NULL };
-
- M4OSA_FileWriterPointer fileWritePtr =
- { M4OSA_NULL, M4OSA_NULL, M4OSA_NULL,
- M4OSA_NULL, M4OSA_NULL, M4OSA_NULL, M4OSA_NULL };
-
- // Initialize the OSAL file system function pointers.
- videoEditOsal_getFilePointers(&fileReadPtr , &fileWritePtr);
-
- // Log the API call.
- VIDEOEDIT_LOG_API(
- ANDROID_LOG_INFO, "VIDEO_EDITOR_PROPERTIES",\
- "getClipProperties - M4MCS_init()");
-
- // Initialize the MCS context.
- result = M4MCS_init(&context, &fileReadPtr, &fileWritePtr);
-
- // Log the result.
- VIDEOEDIT_PROP_LOG_RESULT(
- ANDROID_LOG_INFO, "VIDEO_EDITOR_PROPERTIES", "%s",
- videoEditOsal_getResultString(result));
-
- // Check if the creation succeeded.
- videoEditJava_checkAndThrowRuntimeException(
- &gotten, pEnv, (M4NO_ERROR != result), result);
-
- // Check if opening the MCS context succeeded.
- if (gotten)
- {
- // Log the API call.
- VIDEOEDIT_LOG_API(
- ANDROID_LOG_INFO, "VIDEO_EDITOR_PROPERTIES",
- "getClipProperties - M4MCS_open_normalMode()");
-
- // Open the MCS in the normal opening mode to
- // retrieve the exact duration
- result = M4MCS_open_normalMode(
- context, pFile, clipType, M4OSA_NULL, M4OSA_NULL);
-
- // Log the result.
- VIDEOEDIT_PROP_LOG_RESULT(
- ANDROID_LOG_INFO, "VIDEO_EDITOR_PROPERTIES", "%s",
- videoEditOsal_getResultString(result));
-
- // Check if the creation succeeded.
- videoEditJava_checkAndThrowRuntimeException(
- &gotten, pEnv, (M4NO_ERROR != result), result);
-
- // Check if the MCS could be opened.
- if (gotten)
- {
- // Log the API call.
- VIDEOEDIT_LOG_API(
- ANDROID_LOG_INFO, "VIDEO_EDITOR_PROPERTIES",
- "getClipProperties - M4MCS_getInputFileProperties()");
-
- // Get the properties.
- result = M4MCS_getInputFileProperties(context, pClipProperties);
-
- // Log the result.
- VIDEOEDIT_PROP_LOG_RESULT(
- ANDROID_LOG_INFO, "VIDEO_EDITOR_PROPERTIES", "%s",
- videoEditOsal_getResultString(result));
-
- // Check if the creation succeeded.
- videoEditJava_checkAndThrowRuntimeException(
- &gotten, pEnv, (M4NO_ERROR != result), result);
- }
-
- // Log the API call.
- VIDEOEDIT_LOG_API(
- ANDROID_LOG_INFO, "VIDEO_EDITOR_PROPERTIES",
- "getClipProperties - M4MCS_abort()");
-
- // Close the MCS session.
- resultAbort = M4MCS_abort(context);
-
- if (result == M4NO_ERROR) {
- // Log the result.
- VIDEOEDIT_PROP_LOG_RESULT(
- ANDROID_LOG_INFO, "VIDEO_EDITOR_PROPERTIES", "%s",
- videoEditOsal_getResultString(resultAbort));
-
- // Check if the abort succeeded.
- videoEditJava_checkAndThrowRuntimeException(
- &gotten, pEnv, (M4NO_ERROR != resultAbort), resultAbort);
- result = resultAbort;
- }
- }
-
- return result;
-}
-
-M4OSA_UInt32
-VideoEdit_chrCompare(M4OSA_Char* pStrIn1,
- M4OSA_Char* pStrIn2,
- M4OSA_Int32* pCmpResult)
-{
- *pCmpResult = strcmp((const char *)pStrIn1, (const char *)pStrIn2);
- return *pCmpResult;
-}
-
-
diff --git a/media/jni/mediaeditor/VideoEditorThumbnailMain.cpp b/media/jni/mediaeditor/VideoEditorThumbnailMain.cpp
deleted file mode 100644
index 1508246..0000000
--- a/media/jni/mediaeditor/VideoEditorThumbnailMain.cpp
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <jni.h>
-#include <JNIHelp.h>
-#include <utils/Log.h>
-#include "VideoBrowserMain.h"
-#include "VideoBrowserInternal.h"
-
-#if (M4OSA_TRACE_LEVEL >= 1)
-#undef M4OSA_TRACE1_0
-#undef M4OSA_TRACE1_1
-#undef M4OSA_TRACE1_2
-#undef M4OSA_TRACE1_3
-
-#define M4OSA_TRACE1_0(a) __android_log_print(ANDROID_LOG_INFO, "Thumbnail", a);
-#define M4OSA_TRACE1_1(a,b) __android_log_print(ANDROID_LOG_INFO, "Thumbnail", a,b);
-#define M4OSA_TRACE1_2(a,b,c) __android_log_print(ANDROID_LOG_INFO, "Thumbnail", a,b,c);
-#define M4OSA_TRACE1_3(a,b,c,d) __android_log_print(ANDROID_LOG_INFO, "Thumbnail", a,b,c,d);
-#endif
-
-/*
- * Memory format of 'ARGB8888' in skia is RGBA, so ABGR in 32bit little-endian packed format
- * bitmap format is rgb565
- */
-// RED GREEN BLUE ALPHA
-#define RGB565toSKCOLOR(c) ( (((c)&0xF800)>>8) | (((c)&0x7E0)<<5) | (((c)&0x1F)<<19) | 0xFF000000)
-
-#define GetIntField(env, obj, name) env->GetIntField(obj,\
-env->GetFieldID(env->GetObjectClass(obj), name, "I"))
-
-extern "C" M4OSA_ERR NXPSW_FileReaderOptim_init(M4OSA_Void *lowLevel_functionPointers,
- M4OSA_Void *optimized_functionPointers);
-
-/*
- * Video Browser execution context.
- * Based on request for RGB565 or RGB888, m_dst16 or m_dst32
- * will be initialized and used
- */
-typedef struct
-{
- M4OSA_Context m_pVideoBrowser;
- M4OSA_UInt32 m_previousTime;
- M4OSA_Int32* m_dst32;
- M4OSA_Int16* m_dst16;
- unsigned int m_width;
- unsigned int m_height;
- M4OSA_Bool m_bRender;
-} ThumbnailContext;
-
-/**
- ************************************************************************
- * @brief Interface to retrieve the thumbnail pixels
- * @param pContext (IN) Thumbnail Context.
- * @param width (IN) Width of thumbnail
- * @param height (IN) Height of thumbnail
- * @param pTimeMS (IN/OUT)Time stamp at which thumbnail is retrieved.
- ************************************************************************
-*/
-M4OSA_ERR ThumbnailGetPixels(const M4OSA_Context pContext,
- M4OSA_Int32* pixelArray,
- M4OSA_UInt32 width, M4OSA_UInt32 height,
- M4OSA_UInt32* pTimeMS, M4OSA_UInt32 tolerance);
-
-
-/**
- ************************************************************************
- * @brief Video browser callback, called when a frame must be displayed
- * @param pInstance (IN) Thumbnail context.
- * @param notificationID (IN) Id of the callback which generated the error
- * @param errCode (IN) Error code from the Core
- * @param pCbData (IN) pointer to data associated wit the callback.
- * @param pCbUserData (IN) pointer to application user data passed in init.
- * @note This callback mechanism is used to request display of an image
- ************************************************************************
-*/
-M4OSA_Void VBcallback( M4OSA_Context pInstance,
- VideoBrowser_Notification notificationID,
- M4OSA_ERR errCode, M4OSA_Void* pCbData,
- M4OSA_Void* pCallbackUserData)
-{
- M4OSA_UInt32 i, j;
- M4OSA_ERR err;
-
- M4OSA_TRACE3_0("inside VBcallback");
- M4VIFI_ImagePlane* pPlane=NULL;
- M4OSA_UInt16* src=NULL;
- ThumbnailContext* pC = NULL;
-
- CHECK_PTR(VBcallback, pCbData, err, M4ERR_PARAMETER);
- CHECK_PTR(VBcallback, pInstance,err, M4ERR_PARAMETER);
-
- pC = (ThumbnailContext*)pCallbackUserData ;
- CHECK_PTR(VBcallback, pC->m_pVideoBrowser, err, M4ERR_PARAMETER);
-
- pPlane = (M4VIFI_ImagePlane*)pCbData;
- src = (M4OSA_UInt16*)pPlane->pac_data;
-
- if (pC->m_dst32 != NULL)
- {
- M4OSA_Int32* dst = pC->m_dst32;
-
- for (j = 0; j < pPlane->u_height; j++)
- {
- for (i = 0; i < pPlane->u_width; i++)
- {
- dst[i] = RGB565toSKCOLOR(src[i]);
- }
- for (i = pPlane->u_width; i < pC->m_width; i++)
- {
- dst[i] = 0;
- }
- src = (M4OSA_UInt16*)((M4OSA_UInt8*)src + pPlane->u_stride);
- dst += pC->m_width;
- }
- }
- else if (pC->m_dst16 != NULL)
- {
- M4OSA_Int16* dst = pC->m_dst16;
-
- for (j = 0; j < pPlane->u_height; j++)
- {
- memcpy((void * )dst, (void * )src, pPlane->u_stride);
- for (i = pPlane->u_width; i < pC->m_width; i++)
- {
- dst[i] = 0;
- }
- src = (M4OSA_UInt16*)((M4OSA_UInt8*)src + pPlane->u_stride);
- dst += pC->m_width;
- }
- }
- else
- {
- CHECK_PTR(VBcallback, NULL, err, M4ERR_PARAMETER);
- }
-
-VBcallback_cleanUp:
-
- return;
-}
-
-M4OSA_ERR ThumbnailOpen(M4OSA_Context *pPContext,
- const M4OSA_Char *pString,
- M4OSA_Bool bRender)
-{
-
- M4OSA_ERR err;
- ThumbnailContext *pContext = M4OSA_NULL;
- VideoBrowser_VideoColorType vbColorType;
-
- CHECK_PTR(ThumbnailOpen, pString, err, M4ERR_BAD_CONTEXT);
-
- /*--- Create context ---*/
- pContext = (ThumbnailContext*)M4OSA_32bitAlignedMalloc(sizeof(ThumbnailContext), VIDEOBROWSER,
- (M4OSA_Char*)"Thumbnail context") ;
- M4OSA_TRACE3_1("context value is = %d",pContext);
- CHECK_PTR(ThumbnailOpen, pContext, err, M4ERR_ALLOC);
-
- memset((void *)pContext, 0,sizeof(ThumbnailContext));
-
- M4OSA_FileReadPointer optFP;
- M4OSA_FileReadPointer llFP;
-
- NXPSW_FileReaderOptim_init(&llFP, &optFP);
- M4OSA_TRACE1_2("ThumbnailOpen: entering videoBrowserCreate with 0x%x %s",
- &pContext->m_pVideoBrowser, pString) ;
-
- pContext->m_bRender = bRender;
- if (bRender == M4OSA_TRUE) {
- //Open is called for rendering the frame.
- //So set YUV420 as the output color format.
- vbColorType = VideoBrowser_kYUV420;
- } else {
- //Open is called for thumbnail Extraction
- //So set BGR565 as the output.
- vbColorType = VideoBrowser_kGB565;
- }
-
- err = videoBrowserCreate(&pContext->m_pVideoBrowser, (M4OSA_Char*)pString,
- VideoBrowser_kVBNormalBliting, &optFP, VBcallback, pContext, vbColorType);
-
- M4OSA_TRACE1_1("err value is = 0x%x",err);
- CHECK_ERR(ThumbnailOpen, err);
- CHECK_PTR(ThumbnailOpen, pContext->m_pVideoBrowser, err, M4ERR_ALLOC);
-
- *pPContext = pContext;
- M4OSA_TRACE1_1("context value is = %d",*pPContext);
-
- return M4NO_ERROR;
-
-ThumbnailOpen_cleanUp:
-
- M4OSA_TRACE1_0("i am inside cleanUP");
- if (M4OSA_NULL != pContext)
- {
- if (M4OSA_NULL != pContext->m_pVideoBrowser)
- {
- videoBrowserCleanUp(pContext->m_pVideoBrowser) ;
- }
- free(pContext) ;
- }
- return err;
-}
-
-M4OSA_ERR ThumbnailGetPixels(const M4OSA_Context pContext,
- M4OSA_Int32* pixelArray,
- M4OSA_UInt32 width, M4OSA_UInt32 height,
- M4OSA_UInt32* pTimeMS, M4OSA_UInt32 tolerance)
-{
- M4OSA_ERR err;
-
- ThumbnailContext* pC = (ThumbnailContext*)pContext;
-
- if ((pC->m_width != width) || (pC->m_height != height))
- {
- err = videoBrowserSetWindow(pC->m_pVideoBrowser, pixelArray,
- 0, 0, width, height);
- CHECK_ERR(ThumbnailGetPixels, err);
- pC->m_width = width;
- pC->m_height = height;
- }
-
- // Alter the pTimeMS to a valid value at which a frame is found
- // m_currentCTS has the actual frame time stamp just ahead of the
- // pTimeMS supplied.
- if ((((VideoBrowserContext*)pC->m_pVideoBrowser)->m_currentCTS != 0) &&
- (*pTimeMS >= pC->m_previousTime) &&
- (*pTimeMS < ((VideoBrowserContext*)pC->m_pVideoBrowser)->m_currentCTS))
- {
- pC->m_previousTime = *pTimeMS;
- *pTimeMS = ((VideoBrowserContext*)pC->m_pVideoBrowser)->m_currentCTS;
- }
- else
- {
- pC->m_previousTime = *pTimeMS;
- }
-
- err = videoBrowserPrepareFrame(pC->m_pVideoBrowser, pTimeMS, tolerance);
- CHECK_ERR(ThumbnailGetPixels, err);
-
- if (pC->m_bRender != M4OSA_TRUE) {
- err = videoBrowserDisplayCurrentFrame(pC->m_pVideoBrowser);
- CHECK_ERR(ThumbnailGetPixels, err);
- }
-
-ThumbnailGetPixels_cleanUp:
-
- return err;
-}
-
-M4OSA_ERR ThumbnailGetPixels32(const M4OSA_Context pContext,
- M4OSA_Int32* pixelArray, M4OSA_UInt32 width,
- M4OSA_UInt32 height, M4OSA_UInt32* timeMS,
- M4OSA_UInt32 tolerance)
-{
-
- M4OSA_ERR err = M4NO_ERROR;
-
- ThumbnailContext* pC = (ThumbnailContext*)pContext;
-
- CHECK_PTR(ThumbnailGetPixels32, pC->m_pVideoBrowser, err, M4ERR_ALLOC) ;
- CHECK_PTR(ThumbnailGetPixels32, pixelArray, err, M4ERR_ALLOC) ;
-
- pC->m_dst16 = NULL;
- pC->m_dst32 = pixelArray;
-
- err = ThumbnailGetPixels(pContext, pixelArray, width, height, timeMS, tolerance);
-
-ThumbnailGetPixels32_cleanUp:
-
- return err;
-}
-
-M4OSA_ERR ThumbnailGetPixels16(const M4OSA_Context pContext,
- M4OSA_Int16* pixelArray, M4OSA_UInt32 width,
- M4OSA_UInt32 height, M4OSA_UInt32* timeMS,
- M4OSA_UInt32 tolerance)
-{
- M4OSA_ERR err = M4NO_ERROR;
-
- ThumbnailContext* pC = (ThumbnailContext*)pContext;
-
- CHECK_PTR(ThumbnailGetPixels16, pC->m_pVideoBrowser, err, M4ERR_ALLOC);
- CHECK_PTR(ThumbnailGetPixels16, pixelArray, err, M4ERR_ALLOC);
-
- pC->m_dst16 = pixelArray;
- pC->m_dst32 = NULL;
-
- err = ThumbnailGetPixels(pContext, (M4OSA_Int32*)pixelArray, width, height,
- timeMS, tolerance);
-
-ThumbnailGetPixels16_cleanUp:
-
- return err;
-}
-
-
-void ThumbnailClose(const M4OSA_Context pContext)
-{
- M4OSA_ERR err;
-
- ThumbnailContext* pC = (ThumbnailContext*)pContext;
-
- CHECK_PTR(ThumbnailClose, pC, err, M4ERR_ALLOC);
-
- if (M4OSA_NULL != pC)
- {
- if (M4OSA_NULL != pC->m_pVideoBrowser)
- {
- videoBrowserCleanUp(pC->m_pVideoBrowser);
- }
- free(pC);
- }
-
-ThumbnailClose_cleanUp:
-
- return;
-}
-
diff --git a/media/jni/mediaeditor/VideoEditorThumbnailMain.h b/media/jni/mediaeditor/VideoEditorThumbnailMain.h
deleted file mode 100644
index 0b3b0c8..0000000
--- a/media/jni/mediaeditor/VideoEditorThumbnailMain.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef VIDEOEDITOR_THUMBNAIL_MAIN_H
-#define VIDEOEDITOR_THUMBNAIL_MAIN_H
-
-/**
- ************************************************************************
- * @file VideoEditorThumbnailMain.h
- * @brief Thumbnail extract interface.
- ************************************************************************
-*/
-
-/**
- ************************************************************************
- * @brief Interface to open a Thumbnail session.
- * @param pContext (OUT) Thumbnail Context.
- * @param pString (IN) File path from which thumbnail will be
- * retrieved
- * @param M4OSA_Bool (IN) true if this is for rendering at native layer.
- ************************************************************************
-*/
-M4OSA_ERR ThumbnailOpen(M4OSA_Context *pPContext,
- const M4OSA_Char *pString,
- M4OSA_Bool bRender);
-
-/**
- ************************************************************************
- * @brief Interface to retrieve a RGB888 format thumbnail pixels
- * @param pContext (IN) Thumbnail Context.
- * @param pixelArray (OUT) Pointer to array in which pixels data to return
- * @param width (IN) Width of thumbnail
- * @param height (IN) Height of thumbnail
- * @param pTimeMS (IN/OUT)Time stamp at which thumbnail is retrieved.
- ************************************************************************
-*/
-M4OSA_ERR ThumbnailGetPixels32(const M4OSA_Context pContext,
- M4OSA_Int32* pixelArray, M4OSA_UInt32 width,
- M4OSA_UInt32 height, M4OSA_UInt32 *timeMS,
- M4OSA_UInt32 tolerance);
-
-/**
- ************************************************************************
- * @brief Interface to retrieve a RGB565 format thumbnail pixels
- * @param pContext (IN) Thumbnail Context.
- * @param pixelArray (OUT) Pointer to array in which pixcel data to return
- * @param width (IN) Width of thumbnail
- * @param height (IN) Height of thumbnail
- * @param pTimeMS (IN/OUT)Time stamp at which thumbnail is retrieved.
- ************************************************************************
-*/
-M4OSA_ERR ThumbnailGetPixels16(const M4OSA_Context pContext,
- M4OSA_Int16* pixelArray, M4OSA_UInt32 width,
- M4OSA_UInt32 height, M4OSA_UInt32 *timeMS,
- M4OSA_UInt32 tolerance);
-
-/**
- ************************************************************************
- * @brief Interface to close the Thumbnail session.
- * @param pContext (IN) Thumbnail Context.
- ************************************************************************
-*/
-void ThumbnailClose(const M4OSA_Context pContext);
-
-#endif // VIDEOEDITOR_THUMBNAIL_MAIN_H