Merge "Fix for issue 3366265 : Native crash exporting movie" into honeycomb
diff --git a/media/java/android/media/videoeditor/VideoEditorImpl.java b/media/java/android/media/videoeditor/VideoEditorImpl.java
index c19725c..672ce19 100755
--- a/media/java/android/media/videoeditor/VideoEditorImpl.java
+++ b/media/java/android/media/videoeditor/VideoEditorImpl.java
@@ -60,6 +60,11 @@
final Semaphore mPreviewSemaphore = new Semaphore(1, true);
/*
+ * Semaphore to control export calls
+ */
+ final Semaphore mExportSemaphore = new Semaphore(1, true);
+
+ /*
* XML tags
*/
private static final String TAG_PROJECT = "project";
@@ -401,8 +406,15 @@
throw new IllegalArgumentException("Argument Bitrate incorrect");
}
- mMANativeHelper.export(filename, mProjectPath, height,bitrate,audioCodec,
+ try {
+ mExportSemaphore.acquire();
+ mMANativeHelper.export(filename, mProjectPath, height,bitrate,audioCodec,
videoCodec,mMediaItems, mTransitions, mAudioTracks,listener);
+ } catch (InterruptedException ex) {
+ Log.e("VideoEditorImpl", "Sem acquire NOT successful in export");
+ } finally {
+ mExportSemaphore.release();
+ }
}
/*
@@ -466,9 +478,16 @@
throw new IllegalArgumentException("Argument Bitrate incorrect");
}
- mMANativeHelper.export(filename, mProjectPath, height,bitrate,
+ try {
+ mExportSemaphore.acquire();
+ mMANativeHelper.export(filename, mProjectPath, height,bitrate,
mMediaItems, mTransitions, mAudioTracks,
listener);
+ } catch (InterruptedException ex) {
+ Log.e("VideoEditorImpl", "Sem acquire NOT successful in export");
+ } finally {
+ mExportSemaphore.release();
+ }
}
/*
@@ -476,7 +495,7 @@
*/
public void generatePreview(MediaProcessingProgressListener listener) {
boolean semAcquireDone = false;
- try{
+ try {
mPreviewSemaphore.acquire();
semAcquireDone = true;
mMANativeHelper.setGeneratePreview(true);