summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/current.txt5
-rw-r--r--cmds/stagefright/Android.mk18
-rw-r--r--core/java/android/hardware/Camera.java63
-rw-r--r--core/java/android/text/Layout.java92
-rw-r--r--core/java/android/text/SpanSet.java111
-rw-r--r--core/java/android/text/TextLine.java74
-rw-r--r--core/java/android/view/View.java4
-rw-r--r--core/java/android/webkit/WebViewClassic.java10
-rw-r--r--core/java/android/webkit/WebViewCore.java11
-rw-r--r--core/java/android/widget/FrameLayout.java15
-rw-r--r--core/java/android/widget/LinearLayout.java19
-rw-r--r--core/java/android/widget/RelativeLayout.java14
-rw-r--r--core/java/android/widget/TableLayout.java4
-rw-r--r--core/jni/android_app_NativeActivity.cpp88
-rw-r--r--core/jni/android_hardware_Camera.cpp16
-rw-r--r--core/jni/android_media_AudioRecord.cpp108
-rw-r--r--core/jni/android_media_AudioSystem.cpp2
-rw-r--r--core/jni/android_media_AudioTrack.cpp106
-rw-r--r--core/jni/android_media_JetPlayer.cpp36
-rw-r--r--core/jni/android_view_Surface.cpp12
-rw-r--r--core/res/AndroidManifest.xml15
-rw-r--r--core/res/res/values-af/strings.xml8
-rw-r--r--core/res/res/values-am/strings.xml8
-rw-r--r--core/res/res/values-ar/strings.xml8
-rw-r--r--core/res/res/values-be/strings.xml8
-rw-r--r--core/res/res/values-bg/strings.xml8
-rw-r--r--core/res/res/values-ca/strings.xml8
-rw-r--r--core/res/res/values-cs/strings.xml8
-rw-r--r--core/res/res/values-da/strings.xml8
-rw-r--r--core/res/res/values-de/strings.xml8
-rw-r--r--core/res/res/values-el/strings.xml8
-rw-r--r--core/res/res/values-en-rGB/strings.xml8
-rw-r--r--core/res/res/values-es-rUS/strings.xml8
-rw-r--r--core/res/res/values-es/strings.xml8
-rw-r--r--core/res/res/values-et/strings.xml8
-rw-r--r--core/res/res/values-fa/strings.xml8
-rw-r--r--core/res/res/values-fi/strings.xml8
-rw-r--r--core/res/res/values-fr/strings.xml8
-rw-r--r--core/res/res/values-hi/strings.xml8
-rw-r--r--core/res/res/values-hr/strings.xml8
-rw-r--r--core/res/res/values-hu/strings.xml8
-rw-r--r--core/res/res/values-in/strings.xml40
-rw-r--r--core/res/res/values-it/strings.xml8
-rw-r--r--core/res/res/values-iw/strings.xml8
-rw-r--r--core/res/res/values-ja/strings.xml8
-rw-r--r--core/res/res/values-ko/strings.xml8
-rw-r--r--core/res/res/values-lt/strings.xml8
-rw-r--r--core/res/res/values-lv/strings.xml8
-rw-r--r--core/res/res/values-ms/strings.xml8
-rw-r--r--core/res/res/values-nb/strings.xml8
-rw-r--r--core/res/res/values-nl/strings.xml8
-rw-r--r--core/res/res/values-pl/strings.xml8
-rw-r--r--core/res/res/values-pt-rPT/strings.xml8
-rw-r--r--core/res/res/values-pt/strings.xml8
-rw-r--r--core/res/res/values-rm/strings.xml8
-rw-r--r--core/res/res/values-ro/strings.xml8
-rw-r--r--core/res/res/values-ru/strings.xml8
-rw-r--r--core/res/res/values-sk/strings.xml8
-rw-r--r--core/res/res/values-sl/strings.xml8
-rw-r--r--core/res/res/values-sr/strings.xml8
-rw-r--r--core/res/res/values-sv/strings.xml8
-rw-r--r--core/res/res/values-sw/strings.xml8
-rw-r--r--core/res/res/values-th/strings.xml8
-rw-r--r--core/res/res/values-tl/strings.xml8
-rw-r--r--core/res/res/values-tr/strings.xml8
-rw-r--r--core/res/res/values-uk/strings.xml8
-rw-r--r--core/res/res/values-vi/strings.xml8
-rw-r--r--core/res/res/values-zh-rCN/strings.xml8
-rw-r--r--core/res/res/values-zh-rTW/strings.xml8
-rw-r--r--core/res/res/values-zu/strings.xml8
-rwxr-xr-xcore/res/res/values/strings.xml20
-rw-r--r--core/tests/coretests/src/android/util/LocaleUtilTest.java200
-rw-r--r--drm/libdrmframework/plugins/passthru/src/DrmPassthruPlugIn.cpp66
-rw-r--r--include/android_runtime/android_app_NativeActivity.h13
-rw-r--r--include/androidfw/Input.h20
-rw-r--r--include/androidfw/InputTransport.h24
-rw-r--r--include/media/IAudioRecord.h6
-rw-r--r--include/media/IAudioTrack.h8
-rw-r--r--include/media/IMediaMetadataRetriever.h1
-rw-r--r--include/media/IMediaPlayer.h1
-rw-r--r--include/media/IMediaPlayerClient.h1
-rw-r--r--include/media/IMediaRecorderClient.h1
-rw-r--r--include/media/JetPlayer.h10
-rw-r--r--include/media/MediaMetadataRetrieverInterface.h3
-rw-r--r--include/media/MediaPlayerInterface.h1
-rw-r--r--include/media/MediaProfiles.h1
-rw-r--r--include/media/MemoryLeakTrackUtil.h1
-rw-r--r--include/media/mediaplayer.h4
-rw-r--r--include/media/stagefright/HardwareAPI.h113
-rw-r--r--include/media/stagefright/MetadataBufferType.h94
-rw-r--r--include/media/stagefright/OMXPluginBase.h61
-rw-r--r--include/media/stagefright/openmax/OMX_Audio.h1328
-rw-r--r--include/media/stagefright/openmax/OMX_Component.h596
-rw-r--r--include/media/stagefright/openmax/OMX_ContentPipe.h212
-rw-r--r--include/media/stagefright/openmax/OMX_Core.h1448
-rw-r--r--include/media/stagefright/openmax/OMX_IVCommon.h947
-rw-r--r--include/media/stagefright/openmax/OMX_Image.h345
-rw-r--r--include/media/stagefright/openmax/OMX_Index.h275
-rw-r--r--include/media/stagefright/openmax/OMX_Other.h354
-rw-r--r--include/media/stagefright/openmax/OMX_Types.h365
-rw-r--r--include/media/stagefright/openmax/OMX_Video.h1078
-rw-r--r--include/private/media/VideoFrame.h10
-rw-r--r--libs/androidfw/Input.cpp52
-rw-r--r--libs/androidfw/InputTransport.cpp4
-rw-r--r--libs/hwui/DisplayListRenderer.cpp35
-rw-r--r--libs/hwui/DisplayListRenderer.h9
-rw-r--r--libs/rs/tests/Android.mk12
-rw-r--r--media/java/android/media/MediaPlayer.java31
-rw-r--r--media/jni/Android.mk2
-rw-r--r--media/jni/android_media_MediaPlayer.cpp28
-rwxr-xr-xmedia/jni/mediaeditor/Android.mk5
-rw-r--r--media/libaah_rtp/Android.mk4
-rw-r--r--media/libmedia/Android.mk2
-rw-r--r--media/libmedia/AudioEffect.cpp3
-rw-r--r--media/libmedia/AudioRecord.cpp17
-rw-r--r--media/libmedia/AudioSystem.cpp9
-rw-r--r--media/libmedia/AudioTrack.cpp26
-rw-r--r--media/libmedia/IAudioFlinger.cpp18
-rw-r--r--media/libmedia/IAudioFlingerClient.cpp2
-rw-r--r--media/libmedia/IAudioPolicyService.cpp2
-rw-r--r--media/libmedia/IAudioRecord.cpp29
-rw-r--r--media/libmedia/IAudioTrack.cpp30
-rw-r--r--media/libmedia/IEffect.cpp11
-rw-r--r--media/libmedia/IEffectClient.cpp3
-rw-r--r--media/libmedia/IMediaDeathNotifier.cpp8
-rw-r--r--media/libmedia/IMediaPlayer.cpp17
-rw-r--r--media/libmedia/IMediaPlayerClient.cpp2
-rw-r--r--media/libmedia/IMediaPlayerService.cpp2
-rw-r--r--media/libmedia/IMediaRecorder.cpp2
-rw-r--r--media/libmedia/IMediaRecorderClient.cpp2
-rw-r--r--media/libmedia/JetPlayer.cpp51
-rw-r--r--media/libmedia/MediaProfiles.cpp6
-rw-r--r--media/libmedia/MediaScanner.cpp6
-rw-r--r--media/libmedia/MediaScannerClient.cpp1
-rw-r--r--media/libmedia/Metadata.cpp2
-rw-r--r--media/libmedia/ToneGenerator.cpp11
-rw-r--r--media/libmedia/Visualizer.cpp3
-rw-r--r--media/libmedia/mediametadataretriever.cpp2
-rw-r--r--media/libmedia/mediaplayer.cpp21
-rw-r--r--media/libmedia/mediarecorder.cpp34
-rw-r--r--media/libmediaplayerservice/Android.mk6
-rw-r--r--media/libmediaplayerservice/MediaPlayerService.cpp105
-rw-r--r--media/libmediaplayerservice/MediaPlayerService.h51
-rw-r--r--media/libmediaplayerservice/nuplayer/Android.mk8
-rw-r--r--media/libstagefright/Android.mk3
-rw-r--r--media/libstagefright/AudioPlayer.cpp6
-rwxr-xr-xmedia/libstagefright/OMXCodec.cpp2
-rw-r--r--media/libstagefright/SurfaceMediaSource.cpp7
-rw-r--r--media/libstagefright/chromium_http/Android.mk2
-rw-r--r--media/libstagefright/codecs/aacdec/Android.mk2
-rw-r--r--media/libstagefright/codecs/aacenc/Android.mk4
-rw-r--r--media/libstagefright/codecs/amrnb/dec/Android.mk6
-rw-r--r--media/libstagefright/codecs/amrnb/enc/Android.mk2
-rw-r--r--media/libstagefright/codecs/amrwbenc/Android.mk4
-rw-r--r--media/libstagefright/codecs/avc/enc/Android.mk4
-rw-r--r--media/libstagefright/codecs/g711/dec/Android.mk2
-rw-r--r--media/libstagefright/codecs/m4v_h263/dec/Android.mk4
-rw-r--r--media/libstagefright/codecs/m4v_h263/enc/Android.mk4
-rw-r--r--media/libstagefright/codecs/mp3dec/Android.mk2
-rw-r--r--media/libstagefright/codecs/on2/dec/Android.mk2
-rw-r--r--media/libstagefright/codecs/on2/h264dec/Android.mk2
-rw-r--r--media/libstagefright/codecs/vorbis/dec/Android.mk2
-rw-r--r--media/libstagefright/colorconversion/Android.mk2
-rw-r--r--media/libstagefright/httplive/Android.mk6
-rw-r--r--media/libstagefright/matroska/Android.mk2
-rw-r--r--media/libstagefright/mpeg2ts/Android.mk4
-rw-r--r--media/libstagefright/omx/Android.mk3
-rw-r--r--media/libstagefright/omx/OMXMaster.h2
-rw-r--r--media/libstagefright/omx/OMXNodeInstance.cpp2
-rw-r--r--media/libstagefright/omx/SoftOMXPlugin.h2
-rw-r--r--media/libstagefright/omx/tests/Android.mk2
-rw-r--r--media/libstagefright/rtsp/Android.mk8
-rw-r--r--media/libstagefright/tests/Android.mk2
-rw-r--r--media/libstagefright/tests/SurfaceMediaSource_test.cpp9
-rw-r--r--media/libstagefright/timedtext/TimedText3GPPSource.h40
-rw-r--r--media/libstagefright/timedtext/TimedTextSRTSource.h62
-rw-r--r--media/tests/omxjpegdecoder/Android.mk4
-rw-r--r--packages/SystemUI/res/values-in/strings.xml4
-rw-r--r--services/audioflinger/AudioFlinger.cpp224
-rw-r--r--services/audioflinger/AudioFlinger.h10
-rw-r--r--services/audioflinger/AudioMixer.cpp39
-rw-r--r--services/audioflinger/AudioPolicyService.cpp50
-rw-r--r--services/audioflinger/AudioPolicyService.h4
-rw-r--r--services/audioflinger/AudioResampler.cpp2
-rw-r--r--services/audioflinger/AudioResampler.h2
-rw-r--r--services/audioflinger/AudioResamplerCubic.h2
-rw-r--r--services/audioflinger/AudioResamplerSinc.cpp4
-rw-r--r--services/java/com/android/server/NativeDaemonConnector.java71
-rw-r--r--services/java/com/android/server/PowerManagerService.java2
-rw-r--r--telephony/java/com/android/internal/telephony/IccCard.java7
-rw-r--r--telephony/java/com/android/internal/telephony/IccFileHandler.java68
-rw-r--r--telephony/java/com/android/internal/telephony/cdma/CdmaLteUiccFileHandler.java11
-rw-r--r--telephony/java/com/android/internal/telephony/cdma/RuimFileHandler.java10
-rw-r--r--telephony/java/com/android/internal/telephony/gsm/SIMFileHandler.java9
-rw-r--r--tests/RenderScriptTests/SampleTest/src/com/android/rs/sample/sample.rs172
-rw-r--r--wifi/java/android/net/wifi/WifiWatchdogStateMachine.java34
196 files changed, 1897 insertions, 8566 deletions
diff --git a/api/current.txt b/api/current.txt
index 29f093a..6056bf7 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -75,6 +75,7 @@ package android {
field public static final deprecated java.lang.String PERSISTENT_ACTIVITY = "android.permission.PERSISTENT_ACTIVITY";
field public static final java.lang.String PROCESS_OUTGOING_CALLS = "android.permission.PROCESS_OUTGOING_CALLS";
field public static final java.lang.String READ_CALENDAR = "android.permission.READ_CALENDAR";
+ field public static final java.lang.String READ_CALL_LOG = "android.permission.READ_CALL_LOG";
field public static final java.lang.String READ_CONTACTS = "android.permission.READ_CONTACTS";
field public static final java.lang.String READ_EXTERNAL_STORAGE = "android.permission.READ_EXTERNAL_STORAGE";
field public static final java.lang.String READ_FRAME_BUFFER = "android.permission.READ_FRAME_BUFFER";
@@ -121,6 +122,7 @@ package android {
field public static final java.lang.String WAKE_LOCK = "android.permission.WAKE_LOCK";
field public static final java.lang.String WRITE_APN_SETTINGS = "android.permission.WRITE_APN_SETTINGS";
field public static final java.lang.String WRITE_CALENDAR = "android.permission.WRITE_CALENDAR";
+ field public static final java.lang.String WRITE_CALL_LOG = "android.permission.WRITE_CALL_LOG";
field public static final java.lang.String WRITE_CONTACTS = "android.permission.WRITE_CONTACTS";
field public static final java.lang.String WRITE_EXTERNAL_STORAGE = "android.permission.WRITE_EXTERNAL_STORAGE";
field public static final java.lang.String WRITE_GSERVICES = "android.permission.WRITE_GSERVICES";
@@ -26487,6 +26489,7 @@ package android.widget {
ctor public FrameLayout(android.content.Context, android.util.AttributeSet, int);
method public deprecated boolean getConsiderGoneChildrenWhenMeasuring();
method public android.graphics.drawable.Drawable getForeground();
+ method public int getForegroundGravity();
method public boolean getMeasureAllChildren();
method protected void onLayout(boolean, int, int, int, int);
method public void setForeground(android.graphics.drawable.Drawable);
@@ -26715,6 +26718,7 @@ package android.widget {
ctor public LinearLayout(android.content.Context, android.util.AttributeSet);
ctor public LinearLayout(android.content.Context, android.util.AttributeSet, int);
method public int getBaselineAlignedChildIndex();
+ method public android.graphics.drawable.Drawable getDividerDrawable();
method public int getDividerPadding();
method public int getOrientation();
method public int getShowDividers();
@@ -27139,6 +27143,7 @@ package android.widget {
ctor public RelativeLayout(android.content.Context);
ctor public RelativeLayout(android.content.Context, android.util.AttributeSet);
ctor public RelativeLayout(android.content.Context, android.util.AttributeSet, int);
+ method public int getGravity();
method protected void onLayout(boolean, int, int, int, int);
method public void setGravity(int);
method public void setHorizontalGravity(int);
diff --git a/cmds/stagefright/Android.mk b/cmds/stagefright/Android.mk
index f26747b..e41b666 100644
--- a/cmds/stagefright/Android.mk
+++ b/cmds/stagefright/Android.mk
@@ -14,9 +14,9 @@ LOCAL_C_INCLUDES:= \
$(JNI_H_INCLUDE) \
frameworks/base/media/libstagefright \
frameworks/base/media/libstagefright/include \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
- external/skia/include/core \
- external/skia/include/images \
+ $(TOP)/frameworks/native/include/media/openmax \
+ external/skia/include/core \
+ external/skia/include/images \
LOCAL_CFLAGS += -Wno-multichar
@@ -40,7 +40,7 @@ LOCAL_SHARED_LIBRARIES := \
LOCAL_C_INCLUDES:= \
$(JNI_H_INCLUDE) \
frameworks/base/media/libstagefright \
- $(TOP)/frameworks/base/include/media/stagefright/openmax
+ $(TOP)/frameworks/native/include/media/openmax
LOCAL_CFLAGS += -Wno-multichar
@@ -64,7 +64,7 @@ LOCAL_SHARED_LIBRARIES := \
LOCAL_C_INCLUDES:= \
$(JNI_H_INCLUDE) \
frameworks/base/media/libstagefright \
- $(TOP)/frameworks/base/include/media/stagefright/openmax
+ $(TOP)/frameworks/native/include/media/openmax
LOCAL_CFLAGS += -Wno-multichar
@@ -89,7 +89,7 @@ LOCAL_SHARED_LIBRARIES := \
LOCAL_C_INCLUDES:= \
$(JNI_H_INCLUDE) \
frameworks/base/media/libstagefright \
- $(TOP)/frameworks/base/include/media/stagefright/openmax
+ $(TOP)/frameworks/native/include/media/openmax
LOCAL_CFLAGS += -Wno-multichar
@@ -113,7 +113,7 @@ LOCAL_SHARED_LIBRARIES := \
LOCAL_C_INCLUDES:= \
$(JNI_H_INCLUDE) \
frameworks/base/media/libstagefright \
- $(TOP)/frameworks/base/include/media/stagefright/openmax
+ $(TOP)/frameworks/native/include/media/openmax
LOCAL_CFLAGS += -Wno-multichar
@@ -137,7 +137,7 @@ LOCAL_SHARED_LIBRARIES := \
LOCAL_C_INCLUDES:= \
$(JNI_H_INCLUDE) \
frameworks/base/media/libstagefright \
- $(TOP)/frameworks/base/include/media/stagefright/openmax
+ $(TOP)/frameworks/native/include/media/openmax
LOCAL_CFLAGS += -Wno-multichar
@@ -162,7 +162,7 @@ LOCAL_SHARED_LIBRARIES := \
LOCAL_C_INCLUDES:= \
$(JNI_H_INCLUDE) \
frameworks/base/media/libstagefright \
- $(TOP)/frameworks/base/include/media/stagefright/openmax
+ $(TOP)/frameworks/native/include/media/openmax
LOCAL_CFLAGS += -Wno-multichar
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java
index 2775c7b..aa92efb 100644
--- a/core/java/android/hardware/Camera.java
+++ b/core/java/android/hardware/Camera.java
@@ -437,6 +437,13 @@ public class Camera {
* instances of the same camera, or across multiple runs of the same
* program.
*
+ * <p>If you are using the preview data to create video or still images,
+ * strongly consider using {@link android.media.MediaActionSound} to
+ * properly indicate image capture or recording start/stop to the user.</p>
+ *
+ * @see android.media.MediaActionSound
+ * @see android.graphics.SurfaceTexture
+ * @see android.view.TextureView
* @param surfaceTexture the {@link SurfaceTexture} to which the preview
* images are to be sent or null to remove the current preview surface
* texture
@@ -512,13 +519,19 @@ public class Camera {
public native final boolean previewEnabled();
/**
- * Installs a callback to be invoked for every preview frame in addition
+ * <p>Installs a callback to be invoked for every preview frame in addition
* to displaying them on the screen. The callback will be repeatedly called
* for as long as preview is active. This method can be called at any time,
- * even while preview is live. Any other preview callbacks are overridden.
+ * even while preview is live. Any other preview callbacks are
+ * overridden.</p>
+ *
+ * <p>If you are using the preview data to create video or still images,
+ * strongly consider using {@link android.media.MediaActionSound} to
+ * properly indicate image capture or recording start/stop to the user.</p>
*
* @param cb a callback object that receives a copy of each preview frame,
* or null to stop receiving callbacks.
+ * @see android.media.MediaActionSound
*/
public final void setPreviewCallback(PreviewCallback cb) {
mPreviewCallback = cb;
@@ -530,13 +543,18 @@ public class Camera {
}
/**
- * Installs a callback to be invoked for the next preview frame in addition
- * to displaying it on the screen. After one invocation, the callback is
- * cleared. This method can be called any time, even when preview is live.
- * Any other preview callbacks are overridden.
+ * <p>Installs a callback to be invoked for the next preview frame in
+ * addition to displaying it on the screen. After one invocation, the
+ * callback is cleared. This method can be called any time, even when
+ * preview is live. Any other preview callbacks are overridden.</p>
+ *
+ * <p>If you are using the preview data to create video or still images,
+ * strongly consider using {@link android.media.MediaActionSound} to
+ * properly indicate image capture or recording start/stop to the user.</p>
*
* @param cb a callback object that receives a copy of the next preview frame,
* or null to stop receiving callbacks.
+ * @see android.media.MediaActionSound
*/
public final void setOneShotPreviewCallback(PreviewCallback cb) {
mPreviewCallback = cb;
@@ -548,24 +566,30 @@ public class Camera {
private native final void setHasPreviewCallback(boolean installed, boolean manualBuffer);
/**
- * Installs a callback to be invoked for every preview frame, using buffers
- * supplied with {@link #addCallbackBuffer(byte[])}, in addition to
+ * <p>Installs a callback to be invoked for every preview frame, using
+ * buffers supplied with {@link #addCallbackBuffer(byte[])}, in addition to
* displaying them on the screen. The callback will be repeatedly called
- * for as long as preview is active and buffers are available.
- * Any other preview callbacks are overridden.
+ * for as long as preview is active and buffers are available. Any other
+ * preview callbacks are overridden.</p>
*
* <p>The purpose of this method is to improve preview efficiency and frame
* rate by allowing preview frame memory reuse. You must call
* {@link #addCallbackBuffer(byte[])} at some point -- before or after
- * calling this method -- or no callbacks will received.
+ * calling this method -- or no callbacks will received.</p>
*
- * The buffer queue will be cleared if this method is called with a null
+ * <p>The buffer queue will be cleared if this method is called with a null
* callback, {@link #setPreviewCallback(Camera.PreviewCallback)} is called,
- * or {@link #setOneShotPreviewCallback(Camera.PreviewCallback)} is called.
+ * or {@link #setOneShotPreviewCallback(Camera.PreviewCallback)} is
+ * called.</p>
+ *
+ * <p>If you are using the preview data to create video or still images,
+ * strongly consider using {@link android.media.MediaActionSound} to
+ * properly indicate image capture or recording start/stop to the user.</p>
*
* @param cb a callback object that receives a copy of the preview frame,
* or null to stop receiving callbacks and clear the buffer queue.
* @see #addCallbackBuffer(byte[])
+ * @see android.media.MediaActionSound
*/
public final void setPreviewCallbackWithBuffer(PreviewCallback cb) {
mPreviewCallback = cb;
@@ -834,10 +858,15 @@ public class Camera {
* the focus position. Applications must call cancelAutoFocus to reset the
* focus.</p>
*
+ * <p>If autofocus is successful, consider using
+ * {@link android.media.MediaActionSound} to properly play back an autofocus
+ * success sound to the user.</p>
+ *
* @param cb the callback to run
* @see #cancelAutoFocus()
* @see android.hardware.Camera.Parameters#setAutoExposureLock(boolean)
* @see android.hardware.Camera.Parameters#setAutoWhiteBalanceLock(boolean)
+ * @see android.media.MediaActionSound
*/
public final void autoFocus(AutoFocusCallback cb)
{
@@ -1907,12 +1936,12 @@ public class Camera {
* @param value the String value of the parameter
*/
public void set(String key, String value) {
- if (key.indexOf('=') != -1 || key.indexOf(';') != -1) {
- Log.e(TAG, "Key \"" + key + "\" contains invalid character (= or ;)");
+ if (key.indexOf('=') != -1 || key.indexOf(';') != -1 || key.indexOf(0) != -1) {
+ Log.e(TAG, "Key \"" + key + "\" contains invalid character (= or ; or \\0)");
return;
}
- if (value.indexOf('=') != -1 || value.indexOf(';') != -1) {
- Log.e(TAG, "Value \"" + value + "\" contains invalid character (= or ;)");
+ if (value.indexOf('=') != -1 || value.indexOf(';') != -1 || value.indexOf(0) != -1) {
+ Log.e(TAG, "Value \"" + value + "\" contains invalid character (= or ; or \\0)");
return;
}
diff --git a/core/java/android/text/Layout.java b/core/java/android/text/Layout.java
index 516ce2a..2dcea80 100644
--- a/core/java/android/text/Layout.java
+++ b/core/java/android/text/Layout.java
@@ -1,4 +1,4 @@
- /*
+/*
* Copyright (C) 2006 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -363,40 +363,67 @@ public abstract class Layout {
// direction of the layout or line. XXX: Should they?
// They are evaluated at each line.
if (mSpannedText) {
- int previousLineBottom = getLineTop(firstLine);
- int previousLineEnd = getLineStart(firstLine);
- ParagraphStyle[] spans = NO_PARA_SPANS;
- TextPaint paint = mPaint;
- CharSequence buf = mText;
- int spanEnd = 0;
- final int width = mWidth;
- Spanned sp = (Spanned) buf;
- int textLength = buf.length();
- for (int i = firstLine; i <= lastLine; i++) {
- int start = previousLineEnd;
- int end = getLineStart(i + 1);
- previousLineEnd = end;
-
- int ltop = previousLineBottom;
- int lbottom = getLineTop(i + 1);
- previousLineBottom = lbottom;
- int lbaseline = lbottom - getLineDescent(i);
-
- if (start >= spanEnd) {
- // These should be infrequent, so we'll use this so that
- // we don't have to check as often.
- spanEnd = sp.nextSpanTransition(start, textLength, LineBackgroundSpan.class);
- // All LineBackgroundSpans on a line contribute to its background.
- spans = getParagraphSpans(sp, start, end, LineBackgroundSpan.class);
- }
+ if (lineBackgroundSpans == null) {
+ lineBackgroundSpans = new SpanSet<LineBackgroundSpan>(LineBackgroundSpan.class);
+ }
- for (int n = 0; n < spans.length; n++) {
- LineBackgroundSpan back = (LineBackgroundSpan) spans[n];
- back.drawBackground(canvas, paint, 0, width,
- ltop, lbaseline, lbottom,
- buf, start, end, i);
+ Spanned buffer = (Spanned) mText;
+ int textLength = buffer.length();
+ lineBackgroundSpans.init(buffer, 0, textLength);
+
+ if (lineBackgroundSpans.numberOfSpans > 0) {
+ int previousLineBottom = getLineTop(firstLine);
+ int previousLineEnd = getLineStart(firstLine);
+ ParagraphStyle[] spans = NO_PARA_SPANS;
+ int spansLength = 0;
+ TextPaint paint = mPaint;
+ int spanEnd = 0;
+ final int width = mWidth;
+ for (int i = firstLine; i <= lastLine; i++) {
+ int start = previousLineEnd;
+ int end = getLineStart(i + 1);
+ previousLineEnd = end;
+
+ int ltop = previousLineBottom;
+ int lbottom = getLineTop(i + 1);
+ previousLineBottom = lbottom;
+ int lbaseline = lbottom - getLineDescent(i);
+
+ if (start >= spanEnd) {
+ // These should be infrequent, so we'll use this so that
+ // we don't have to check as often.
+ spanEnd = lineBackgroundSpans.getNextTransition(start, textLength);
+ // All LineBackgroundSpans on a line contribute to its background.
+ spansLength = 0;
+ // Duplication of the logic of getParagraphSpans
+ if (start != end || start == 0) {
+ // Equivalent to a getSpans(start, end), but filling the 'spans' local
+ // array instead to reduce memory allocation
+ for (int j = 0; j < lineBackgroundSpans.numberOfSpans; j++) {
+ // equal test is valid since both intervals are not empty by construction
+ if (lineBackgroundSpans.spanStarts[j] >= end ||
+ lineBackgroundSpans.spanEnds[j] <= start) continue;
+ if (spansLength == spans.length) {
+ // The spans array needs to be expanded
+ int newSize = ArrayUtils.idealObjectArraySize(2 * spansLength);
+ ParagraphStyle[] newSpans = new ParagraphStyle[newSize];
+ System.arraycopy(spans, 0, newSpans, 0, spansLength);
+ spans = newSpans;
+ }
+ spans[spansLength++] = lineBackgroundSpans.spans[j];
+ }
+ }
+ }
+
+ for (int n = 0; n < spansLength; n++) {
+ LineBackgroundSpan lineBackgroundSpan = (LineBackgroundSpan) spans[n];
+ lineBackgroundSpan.drawBackground(canvas, paint, 0, width,
+ ltop, lbaseline, lbottom,
+ buffer, start, end, i);
+ }
}
}
+ lineBackgroundSpans.recycle();
}
// There can be a highlight even without spans if we are drawing
@@ -1830,6 +1857,7 @@ public abstract class Layout {
private static final Rect sTempRect = new Rect();
private boolean mSpannedText;
private TextDirectionHeuristic mTextDir;
+ private SpanSet<LineBackgroundSpan> lineBackgroundSpans;
public static final int DIR_LEFT_TO_RIGHT = 1;
public static final int DIR_RIGHT_TO_LEFT = -1;
diff --git a/core/java/android/text/SpanSet.java b/core/java/android/text/SpanSet.java
new file mode 100644
index 0000000..3ca6033
--- /dev/null
+++ b/core/java/android/text/SpanSet.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+package android.text;
+
+import java.lang.reflect.Array;
+
+/**
+ * A cached set of spans. Caches the result of {@link Spanned#getSpans(int, int, Class)} and then
+ * provides faster access to {@link Spanned#nextSpanTransition(int, int, Class)}.
+ *
+ * Fields are left public for a convenient direct access.
+ *
+ * Note that empty spans are ignored by this class.
+ * @hide
+ */
+public class SpanSet<E> {
+ private final Class<? extends E> classType;
+
+ int numberOfSpans;
+ E[] spans;
+ int[] spanStarts;
+ int[] spanEnds;
+ int[] spanFlags;
+
+ SpanSet(Class<? extends E> type) {
+ classType = type;
+ numberOfSpans = 0;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void init(Spanned spanned, int start, int limit) {
+ final E[] allSpans = spanned.getSpans(start, limit, classType);
+ final int length = allSpans.length;
+
+ if (length > 0 && (spans == null || spans.length < length)) {
+ // These arrays may end up being too large because of the discarded empty spans
+ spans = (E[]) Array.newInstance(classType, length);
+ spanStarts = new int[length];
+ spanEnds = new int[length];
+ spanFlags = new int[length];
+ }
+
+ numberOfSpans = 0;
+ for (int i = 0; i < length; i++) {
+ final E span = allSpans[i];
+
+ final int spanStart = spanned.getSpanStart(span);
+ final int spanEnd = spanned.getSpanEnd(span);
+ if (spanStart == spanEnd) continue;
+
+ final int spanFlag = spanned.getSpanFlags(span);
+
+ spans[numberOfSpans] = span;
+ spanStarts[numberOfSpans] = spanStart;
+ spanEnds[numberOfSpans] = spanEnd;
+ spanFlags[numberOfSpans] = spanFlag;
+
+ numberOfSpans++;
+ }
+ }
+
+ /**
+ * Returns true if there are spans intersecting the given interval.
+ * @param end must be strictly greater than start
+ */
+ public boolean hasSpansIntersecting(int start, int end) {
+ for (int i = 0; i < numberOfSpans; i++) {
+ // equal test is valid since both intervals are not empty by construction
+ if (spanStarts[i] >= end || spanEnds[i] <= start) continue;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Similar to {@link Spanned#nextSpanTransition(int, int, Class)}
+ */
+ int getNextTransition(int start, int limit) {
+ for (int i = 0; i < numberOfSpans; i++) {
+ final int spanStart = spanStarts[i];
+ final int spanEnd = spanEnds[i];
+ if (spanStart > start && spanStart < limit) limit = spanStart;
+ if (spanEnd > start && spanEnd < limit) limit = spanEnd;
+ }
+ return limit;
+ }
+
+ /**
+ * Removes all internal references to the spans to avoid memory leaks.
+ */
+ public void recycle() {
+ // The spans array is guaranteed to be not null when numberOfSpans is > 0
+ for (int i = 0; i < numberOfSpans; i++) {
+ spans[i] = null; // prevent a leak: no reference kept when TextLine is recycled
+ }
+ }
+}
diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java
index 1e8a2f7..0d2835a 100644
--- a/core/java/android/text/TextLine.java
+++ b/core/java/android/text/TextLine.java
@@ -30,8 +30,6 @@ import android.util.Log;
import com.android.internal.util.ArrayUtils;
-import java.lang.reflect.Array;
-
/**
* Represents a line of styled text, for measuring in visual order and
* for rendering.
@@ -860,78 +858,6 @@ class TextLine {
return runIsRtl ? -ret : ret;
}
- private static class SpanSet<E> {
- int numberOfSpans;
- E[] spans;
- int[] spanStarts;
- int[] spanEnds;
- int[] spanFlags;
- final Class<? extends E> classType;
-
- SpanSet(Class<? extends E> type) {
- classType = type;
- numberOfSpans = 0;
- }
-
- @SuppressWarnings("unchecked")
- public void init(Spanned spanned, int start, int limit) {
- final E[] allSpans = spanned.getSpans(start, limit, classType);
- final int length = allSpans.length;
-
- if (length > 0 && (spans == null || spans.length < length)) {
- // These arrays may end up being too large because of empty spans
- spans = (E[]) Array.newInstance(classType, length);
- spanStarts = new int[length];
- spanEnds = new int[length];
- spanFlags = new int[length];
- }
-
- numberOfSpans = 0;
- for (int i = 0; i < length; i++) {
- final E span = allSpans[i];
-
- final int spanStart = spanned.getSpanStart(span);
- final int spanEnd = spanned.getSpanEnd(span);
- if (spanStart == spanEnd) continue;
-
- final int spanFlag = spanned.getSpanFlags(span);
-
- spans[numberOfSpans] = span;
- spanStarts[numberOfSpans] = spanStart;
- spanEnds[numberOfSpans] = spanEnd;
- spanFlags[numberOfSpans] = spanFlag;
-
- numberOfSpans++;
- }
- }
-
- public boolean hasSpansIntersecting(int start, int end) {
- for (int i = 0; i < numberOfSpans; i++) {
- // equal test is valid since both intervals are not empty by construction
- if (spanStarts[i] >= end || spanEnds[i] <= start) continue;
- return true;
- }
- return false;
- }
-
- int getNextTransition(int start, int limit) {
- for (int i = 0; i < numberOfSpans; i++) {
- final int spanStart = spanStarts[i];
- final int spanEnd = spanEnds[i];
- if (spanStart > start && spanStart < limit) limit = spanStart;
- if (spanEnd > start && spanEnd < limit) limit = spanEnd;
- }
- return limit;
- }
-
- public void recycle() {
- // The spans array is guaranteed to be not null when numberOfSpans is > 0
- for (int i = 0; i < numberOfSpans; i++) {
- spans[i] = null; // prevent a leak: no reference kept when TextLine is recycled
- }
- }
- }
-
/**
* Utility function for handling a unidirectional run. The run must not
* contain tabs or emoji but can contain styles.
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index bf48ff2..1edcff6 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -10456,10 +10456,10 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
if (mHardwareLayer == null) {
mHardwareLayer = mAttachInfo.mHardwareRenderer.createHardwareLayer(
width, height, isOpaque());
- mLocalDirtyRect.setEmpty();
+ mLocalDirtyRect.set(0, 0, width, height);
} else if (mHardwareLayer.getWidth() != width || mHardwareLayer.getHeight() != height) {
mHardwareLayer.resize(width, height);
- mLocalDirtyRect.setEmpty();
+ mLocalDirtyRect.set(0, 0, width, height);
}
// The layer is not valid if the underlying GPU resources cannot be allocated
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java
index 812d89a..09ce1e2 100644
--- a/core/java/android/webkit/WebViewClassic.java
+++ b/core/java/android/webkit/WebViewClassic.java
@@ -548,9 +548,13 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
if (!initData.mIsSpellCheckEnabled) {
inputType |= InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
}
- if (WebTextView.TEXT_AREA != type
- && initData.mIsTextFieldNext) {
- imeOptions |= EditorInfo.IME_FLAG_NAVIGATE_NEXT;
+ if (WebTextView.TEXT_AREA != type) {
+ if (initData.mIsTextFieldNext) {
+ imeOptions |= EditorInfo.IME_FLAG_NAVIGATE_NEXT;
+ }
+ if (initData.mIsTextFieldPrev) {
+ imeOptions |= EditorInfo.IME_FLAG_NAVIGATE_PREVIOUS;
+ }
}
switch (type) {
case WebTextView.NORMAL_TEXT_FIELD:
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index 8def74b..77d2641 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -954,14 +954,15 @@ public final class WebViewCore {
public TextFieldInitData(int fieldPointer,
String text, int type, boolean isSpellCheckEnabled,
boolean autoComplete, boolean isTextFieldNext,
- String name, String label, int maxLength,
- Rect nodeBounds, int nodeLayerId) {
+ boolean isTextFieldPrev, String name, String label,
+ int maxLength, Rect nodeBounds, int nodeLayerId) {
mFieldPointer = fieldPointer;
mText = text;
mType = type;
mIsAutoCompleteEnabled = autoComplete;
mIsSpellCheckEnabled = isSpellCheckEnabled;
mIsTextFieldNext = isTextFieldNext;
+ mIsTextFieldPrev = isTextFieldPrev;
mName = name;
mLabel = label;
mMaxLength = maxLength;
@@ -973,6 +974,7 @@ public final class WebViewCore {
int mType;
boolean mIsSpellCheckEnabled;
boolean mIsTextFieldNext;
+ boolean mIsTextFieldPrev;
boolean mIsAutoCompleteEnabled;
String mName;
String mLabel;
@@ -2798,7 +2800,7 @@ public final class WebViewCore {
// called by JNI
private void initEditField(int pointer, String text, int inputType,
boolean isSpellCheckEnabled, boolean isAutoCompleteEnabled,
- boolean nextFieldIsText, String name,
+ boolean nextFieldIsText, boolean prevFieldIsText, String name,
String label, int start, int end, int selectionPtr, int maxLength,
Rect nodeRect, int nodeLayer) {
if (mWebView == null) {
@@ -2806,7 +2808,8 @@ public final class WebViewCore {
}
TextFieldInitData initData = new TextFieldInitData(pointer,
text, inputType, isSpellCheckEnabled, isAutoCompleteEnabled,
- nextFieldIsText, name, label, maxLength, nodeRect, nodeLayer);
+ nextFieldIsText, prevFieldIsText, name, label, maxLength,
+ nodeRect, nodeLayer);
Message.obtain(mWebView.mPrivateHandler,
WebViewClassic.INIT_EDIT_FIELD, initData).sendToTarget();
Message.obtain(mWebView.mPrivateHandler,
diff --git a/core/java/android/widget/FrameLayout.java b/core/java/android/widget/FrameLayout.java
index da98884..d019d8c 100644
--- a/core/java/android/widget/FrameLayout.java
+++ b/core/java/android/widget/FrameLayout.java
@@ -122,10 +122,25 @@ public class FrameLayout extends ViewGroup {
}
/**
+ * Describes how the foreground is positioned.
+ *
+ * @return foreground gravity.
+ *
+ * @see #setForegroundGravity(int)
+ *
+ * @attr ref android.R.styleable#FrameLayout_foregroundGravity
+ */
+ public int getForegroundGravity() {
+ return mForegroundGravity;
+ }
+
+ /**
* Describes how the foreground is positioned. Defaults to START and TOP.
*
* @param foregroundGravity See {@link android.view.Gravity}
*
+ * @see #getForegroundGravity()
+ *
* @attr ref android.R.styleable#FrameLayout_foregroundGravity
*/
@android.view.RemotableViewMethod
diff --git a/core/java/android/widget/LinearLayout.java b/core/java/android/widget/LinearLayout.java
index a1bea43..5ed005f 100644
--- a/core/java/android/widget/LinearLayout.java
+++ b/core/java/android/widget/LinearLayout.java
@@ -235,9 +235,24 @@ public class LinearLayout extends ViewGroup {
}
/**
+ * @return the divider Drawable that will divide each item.
+ *
+ * @see #setDividerDrawable(Drawable)
+ *
+ * @attr ref android.R.styleable#LinearLayout_divider
+ */
+ public Drawable getDividerDrawable() {
+ return mDivider;
+ }
+
+ /**
* Set a drawable to be used as a divider between items.
+ *
* @param divider Drawable that will divide each item.
+ *
* @see #setShowDividers(int)
+ *
+ * @attr ref android.R.styleable#LinearLayout_divider
*/
public void setDividerDrawable(Drawable divider) {
if (divider == mDivider) {
@@ -398,6 +413,8 @@ public class LinearLayout extends ViewGroup {
*
* @return True to measure children with a weight using the minimum
* size of the largest child, false otherwise.
+ *
+ * @attr ref android.R.styleable#LinearLayout_measureWithLargestChild
*/
public boolean isMeasureWithLargestChildEnabled() {
return mUseLargestChild;
@@ -412,6 +429,8 @@ public class LinearLayout extends ViewGroup {
*
* @param enabled True to measure children with a weight using the
* minimum size of the largest child, false otherwise.
+ *
+ * @attr ref android.R.styleable#LinearLayout_measureWithLargestChild
*/
@android.view.RemotableViewMethod
public void setMeasureWithLargestChildEnabled(boolean enabled) {
diff --git a/core/java/android/widget/RelativeLayout.java b/core/java/android/widget/RelativeLayout.java
index e4b8f34..29cf000 100644
--- a/core/java/android/widget/RelativeLayout.java
+++ b/core/java/android/widget/RelativeLayout.java
@@ -219,6 +219,20 @@ public class RelativeLayout extends ViewGroup {
}
/**
+ * Describes how the child views are positioned.
+ *
+ * @return the gravity.
+ *
+ * @see #setGravity(int)
+ * @see android.view.Gravity
+ *
+ * @attr ref android.R.styleable#RelativeLayout_gravity
+ */
+ public int getGravity() {
+ return mGravity;
+ }
+
+ /**
* Describes how the child views are positioned. Defaults to
* <code>Gravity.LEFT | Gravity.TOP</code>.
*
diff --git a/core/java/android/widget/TableLayout.java b/core/java/android/widget/TableLayout.java
index b870cee..6331b6d 100644
--- a/core/java/android/widget/TableLayout.java
+++ b/core/java/android/widget/TableLayout.java
@@ -232,6 +232,8 @@ public class TableLayout extends LinearLayout {
* <p>Indicates whether all columns are shrinkable or not.</p>
*
* @return true if all columns are shrinkable, false otherwise
+ *
+ * @attr ref android.R.styleable#TableLayout_shrinkColumns
*/
public boolean isShrinkAllColumns() {
return mShrinkAllColumns;
@@ -252,6 +254,8 @@ public class TableLayout extends LinearLayout {
* <p>Indicates whether all columns are stretchable or not.</p>
*
* @return true if all columns are stretchable, false otherwise
+ *
+ * @attr ref android.R.styleable#TableLayout_stretchColumns
*/
public boolean isStretchAllColumns() {
return mStretchAllColumns;
diff --git a/core/jni/android_app_NativeActivity.cpp b/core/jni/android_app_NativeActivity.cpp
index 088062a..655a834 100644
--- a/core/jni/android_app_NativeActivity.cpp
+++ b/core/jni/android_app_NativeActivity.cpp
@@ -162,12 +162,12 @@ int32_t AInputQueue::hasEvents() {
int32_t AInputQueue::getEvent(AInputEvent** outEvent) {
*outEvent = NULL;
- bool finishNow = false;
-
char byteread;
ssize_t nRead = read(mDispatchKeyRead, &byteread, 1);
+
+ Mutex::Autolock _l(mLock);
+
if (nRead == 1) {
- mLock.lock();
if (mDispatchingKeys.size() > 0) {
KeyEvent* kevent = mDispatchingKeys[0];
*outEvent = kevent;
@@ -178,6 +178,8 @@ int32_t AInputQueue::getEvent(AInputEvent** outEvent) {
inflight.finishSeq = 0;
mInFlightEvents.push(inflight);
}
+
+ bool finishNow = false;
if (mFinishPreDispatches.size() > 0) {
finish_pre_dispatch finish(mFinishPreDispatches[0]);
mFinishPreDispatches.removeAt(0);
@@ -193,7 +195,6 @@ int32_t AInputQueue::getEvent(AInputEvent** outEvent) {
ALOGW("getEvent couldn't find inflight for seq %d", finish.seq);
}
}
- mLock.unlock();
if (finishNow) {
finishEvent(*outEvent, true, false);
@@ -206,7 +207,8 @@ int32_t AInputQueue::getEvent(AInputEvent** outEvent) {
uint32_t consumerSeq;
InputEvent* myEvent = NULL;
- status_t res = mConsumer.consume(this, true /*consumeBatches*/, &consumerSeq, &myEvent);
+ status_t res = mConsumer.consume(&mPooledInputEventFactory, true /*consumeBatches*/,
+ &consumerSeq, &myEvent);
if (res != android::OK) {
if (res != android::WOULD_BLOCK) {
ALOGW("channel '%s' ~ Failed to consume input event. status=%d",
@@ -215,6 +217,10 @@ int32_t AInputQueue::getEvent(AInputEvent** outEvent) {
return -1;
}
+ if (mConsumer.hasDeferredEvent()) {
+ wakeupDispatchLocked();
+ }
+
in_flight_event inflight;
inflight.event = myEvent;
inflight.seq = -1;
@@ -255,7 +261,8 @@ void AInputQueue::finishEvent(AInputEvent* event, bool handled, bool didDefaultH
return;
}
- mLock.lock();
+ Mutex::Autolock _l(mLock);
+
const size_t N = mInFlightEvents.size();
for (size_t i=0; i<N; i++) {
const in_flight_event& inflight(mInFlightEvents[i]);
@@ -267,111 +274,82 @@ void AInputQueue::finishEvent(AInputEvent* event, bool handled, bool didDefaultH
mConsumer.getChannel()->getName().string(), res);
}
}
- if (static_cast<InputEvent*>(event)->getType() == AINPUT_EVENT_TYPE_KEY) {
- mAvailKeyEvents.push(static_cast<KeyEvent*>(event));
- } else {
- mAvailMotionEvents.push(static_cast<MotionEvent*>(event));
- }
+ mPooledInputEventFactory.recycle(static_cast<InputEvent*>(event));
mInFlightEvents.removeAt(i);
- mLock.unlock();
return;
}
}
- mLock.unlock();
-
+
ALOGW("finishEvent called for unknown event: %p", event);
}
void AInputQueue::dispatchEvent(android::KeyEvent* event) {
- mLock.lock();
+ Mutex::Autolock _l(mLock);
+
LOG_TRACE("dispatchEvent: dispatching=%d write=%d\n", mDispatchingKeys.size(),
mDispatchKeyWrite);
mDispatchingKeys.add(event);
- wakeupDispatch();
- mLock.unlock();
+ wakeupDispatchLocked();
}
void AInputQueue::finishPreDispatch(int seq, bool handled) {
- mLock.lock();
+ Mutex::Autolock _l(mLock);
+
LOG_TRACE("finishPreDispatch: seq=%d handled=%d\n", seq, handled ? 1 : 0);
finish_pre_dispatch finish;
finish.seq = seq;
finish.handled = handled;
mFinishPreDispatches.add(finish);
- wakeupDispatch();
- mLock.unlock();
+ wakeupDispatchLocked();
}
KeyEvent* AInputQueue::consumeUnhandledEvent() {
- KeyEvent* event = NULL;
+ Mutex::Autolock _l(mLock);
- mLock.lock();
+ KeyEvent* event = NULL;
if (mUnhandledKeys.size() > 0) {
event = mUnhandledKeys[0];
mUnhandledKeys.removeAt(0);
}
- mLock.unlock();
LOG_TRACE("consumeUnhandledEvent: KeyEvent=%p", event);
-
return event;
}
KeyEvent* AInputQueue::consumePreDispatchingEvent(int* outSeq) {
- KeyEvent* event = NULL;
+ Mutex::Autolock _l(mLock);
- mLock.lock();
+ KeyEvent* event = NULL;
if (mPreDispatchingKeys.size() > 0) {
const in_flight_event& inflight(mPreDispatchingKeys[0]);
event = static_cast<KeyEvent*>(inflight.event);
*outSeq = inflight.seq;
mPreDispatchingKeys.removeAt(0);
}
- mLock.unlock();
LOG_TRACE("consumePreDispatchingEvent: KeyEvent=%p", event);
-
return event;
}
KeyEvent* AInputQueue::createKeyEvent() {
- mLock.lock();
- KeyEvent* event;
- if (mAvailKeyEvents.size() <= 0) {
- event = new KeyEvent();
- } else {
- event = mAvailKeyEvents.top();
- mAvailKeyEvents.pop();
- }
- mLock.unlock();
- return event;
-}
+ Mutex::Autolock _l(mLock);
-MotionEvent* AInputQueue::createMotionEvent() {
- mLock.lock();
- MotionEvent* event;
- if (mAvailMotionEvents.size() <= 0) {
- event = new MotionEvent();
- } else {
- event = mAvailMotionEvents.top();
- mAvailMotionEvents.pop();
- }
- mLock.unlock();
- return event;
+ return mPooledInputEventFactory.createKeyEvent();
}
void AInputQueue::doUnhandledKey(KeyEvent* keyEvent) {
- mLock.lock();
+ Mutex::Autolock _l(mLock);
+
LOG_TRACE("Unhandled key: pending=%d write=%d\n", mUnhandledKeys.size(), mWorkWrite);
if (mUnhandledKeys.size() <= 0 && mWorkWrite >= 0) {
write_work(mWorkWrite, CMD_DEF_KEY);
}
mUnhandledKeys.add(keyEvent);
- mLock.unlock();
}
bool AInputQueue::preDispatchKey(KeyEvent* keyEvent) {
- mLock.lock();
+ Mutex::Autolock _l(mLock);
+
LOG_TRACE("preDispatch key: pending=%d write=%d\n", mPreDispatchingKeys.size(), mWorkWrite);
const size_t N = mInFlightEvents.size();
for (size_t i=0; i<N; i++) {
@@ -380,7 +358,6 @@ bool AInputQueue::preDispatchKey(KeyEvent* keyEvent) {
if (inflight.seq >= 0) {
// This event has already been pre-dispatched!
LOG_TRACE("Event already pre-dispatched!");
- mLock.unlock();
return false;
}
mSeq++;
@@ -391,7 +368,6 @@ bool AInputQueue::preDispatchKey(KeyEvent* keyEvent) {
write_work(mWorkWrite, CMD_DEF_KEY);
}
mPreDispatchingKeys.add(inflight);
- mLock.unlock();
return true;
}
}
@@ -400,7 +376,7 @@ bool AInputQueue::preDispatchKey(KeyEvent* keyEvent) {
return false;
}
-void AInputQueue::wakeupDispatch() {
+void AInputQueue::wakeupDispatchLocked() {
restart:
char dummy = 0;
int res = write(mDispatchKeyWrite, &dummy, sizeof(dummy));
diff --git a/core/jni/android_hardware_Camera.cpp b/core/jni/android_hardware_Camera.cpp
index 599211e..0c66b86 100644
--- a/core/jni/android_hardware_Camera.cpp
+++ b/core/jni/android_hardware_Camera.cpp
@@ -545,12 +545,22 @@ static void android_hardware_Camera_setPreviewTexture(JNIEnv *env,
sp<Camera> camera = get_native_camera(env, thiz, NULL);
if (camera == 0) return;
- sp<SurfaceTexture> surfaceTexture = NULL;
+ sp<BufferQueue> bufferQueue = NULL;
if (jSurfaceTexture != NULL) {
- surfaceTexture = reinterpret_cast<SurfaceTexture*>(env->GetIntField(
+ sp<SurfaceTexture> surfaceTexture = reinterpret_cast<SurfaceTexture*>(env->GetIntField(
jSurfaceTexture, fields.surfaceTexture));
+ if (surfaceTexture != NULL) {
+ bufferQueue = surfaceTexture->getBufferQueue();
+ }
+ else {
+ jniThrowException(env, "java/lang/IllegalArgumentException",
+ "SurfaceTexture already released in setPreviewTexture");
+ return;
+ }
+
}
- if (camera->setPreviewTexture(surfaceTexture) != NO_ERROR) {
+
+ if (camera->setPreviewTexture(bufferQueue) != NO_ERROR) {
jniThrowException(env, "java/io/IOException",
"setPreviewTexture failed");
}
diff --git a/core/jni/android_media_AudioRecord.cpp b/core/jni/android_media_AudioRecord.cpp
index b34dbce..7984b9c 100644
--- a/core/jni/android_media_AudioRecord.cpp
+++ b/core/jni/android_media_AudioRecord.cpp
@@ -72,7 +72,7 @@ Mutex sLock;
#define AUDIORECORD_ERROR_SETUP_NATIVEINITFAILED -20
jint android_media_translateRecorderErrorCode(int code) {
- switch(code) {
+ switch (code) {
case NO_ERROR:
return AUDIORECORD_SUCCESS;
case BAD_VALUE:
@@ -81,7 +81,7 @@ jint android_media_translateRecorderErrorCode(int code) {
return AUDIORECORD_ERROR_INVALID_OPERATION;
default:
return AUDIORECORD_ERROR;
- }
+ }
}
@@ -90,14 +90,14 @@ static void recorderCallback(int event, void* user, void *info) {
if (event == AudioRecord::EVENT_MORE_DATA) {
// set size to 0 to signal we're not using the callback to read more data
AudioRecord::Buffer* pBuff = (AudioRecord::Buffer*)info;
- pBuff->size = 0;
-
+ pBuff->size = 0;
+
} else if (event == AudioRecord::EVENT_MARKER) {
audiorecord_callback_cookie *callbackInfo = (audiorecord_callback_cookie *)user;
JNIEnv *env = AndroidRuntime::getJNIEnv();
if (user && env) {
env->CallStaticVoidMethod(
- callbackInfo->audioRecord_class,
+ callbackInfo->audioRecord_class,
javaAudioRecordFields.postNativeEventInJava,
callbackInfo->audioRecord_ref, event, 0,0, NULL);
if (env->ExceptionCheck()) {
@@ -111,7 +111,7 @@ static void recorderCallback(int event, void* user, void *info) {
JNIEnv *env = AndroidRuntime::getJNIEnv();
if (user && env) {
env->CallStaticVoidMethod(
- callbackInfo->audioRecord_class,
+ callbackInfo->audioRecord_class,
javaAudioRecordFields.postNativeEventInJava,
callbackInfo->audioRecord_ref, event, 0,0, NULL);
if (env->ExceptionCheck()) {
@@ -140,7 +140,7 @@ android_media_AudioRecord_setup(JNIEnv *env, jobject thiz, jobject weak_this,
uint32_t nbChannels = popcount(channels);
// compare the format against the Java constants
- if ((audioFormat != javaAudioRecordFields.PCM16)
+ if ((audioFormat != javaAudioRecordFields.PCM16)
&& (audioFormat != javaAudioRecordFields.PCM8)) {
ALOGE("Error creating AudioRecord: unsupported audio format.");
return AUDIORECORD_ERROR_SETUP_INVALIDFORMAT;
@@ -156,7 +156,7 @@ android_media_AudioRecord_setup(JNIEnv *env, jobject thiz, jobject weak_this,
}
int frameSize = nbChannels * bytesPerSample;
size_t frameCount = buffSizeInBytes / frameSize;
-
+
if (uint32_t(source) >= AUDIO_SOURCE_CNT) {
ALOGE("Error creating AudioRecord: unknown source.");
return AUDIORECORD_ERROR_SETUP_INVALIDSOURCE;
@@ -181,11 +181,11 @@ android_media_AudioRecord_setup(JNIEnv *env, jobject thiz, jobject weak_this,
// create an uninitialized AudioRecord object
lpRecorder = new AudioRecord();
- if(lpRecorder == NULL) {
+ if (lpRecorder == NULL) {
ALOGE("Error creating AudioRecord instance.");
return AUDIORECORD_ERROR_SETUP_NATIVEINITFAILED;
}
-
+
// create the callback information:
// this data will be passed with every AudioRecord callback
jclass clazz = env->GetObjectClass(thiz);
@@ -197,7 +197,7 @@ android_media_AudioRecord_setup(JNIEnv *env, jobject thiz, jobject weak_this,
lpCallbackData->audioRecord_class = (jclass)env->NewGlobalRef(clazz);
// we use a weak reference so the AudioRecord object can be garbage collected.
lpCallbackData->audioRecord_ref = env->NewGlobalRef(weak_this);
-
+
lpRecorder->set((audio_source_t) source,
sampleRateInHertz,
format, // word length, PCM
@@ -210,7 +210,7 @@ android_media_AudioRecord_setup(JNIEnv *env, jobject thiz, jobject weak_this,
true, // threadCanCallJava)
sessionId);
- if(lpRecorder->initCheck() != NO_ERROR) {
+ if (lpRecorder->initCheck() != NO_ERROR) {
ALOGE("Error creating AudioRecord instance: initialization check failed.");
goto native_init_failure;
}
@@ -225,16 +225,16 @@ android_media_AudioRecord_setup(JNIEnv *env, jobject thiz, jobject weak_this,
env->ReleasePrimitiveArrayCritical(jSession, nSession, 0);
nSession = NULL;
- // save our newly created C++ AudioRecord in the "nativeRecorderInJavaObj" field
+ // save our newly created C++ AudioRecord in the "nativeRecorderInJavaObj" field
// of the Java object
env->SetIntField(thiz, javaAudioRecordFields.nativeRecorderInJavaObj, (int)lpRecorder);
-
+
// save our newly created callback information in the "nativeCallbackCookie" field
// of the Java object (in mNativeCallbackCookie) so we can free the memory in finalize()
env->SetIntField(thiz, javaAudioRecordFields.nativeCallbackCookie, (int)lpCallbackData);
-
+
return AUDIORECORD_SUCCESS;
-
+
// failure:
native_init_failure:
env->DeleteGlobalRef(lpCallbackData->audioRecord_class);
@@ -246,7 +246,7 @@ native_track_failure:
env->SetIntField(thiz, javaAudioRecordFields.nativeRecorderInJavaObj, 0);
env->SetIntField(thiz, javaAudioRecordFields.nativeCallbackCookie, 0);
-
+
return AUDIORECORD_ERROR_SETUP_NATIVEINITFAILED;
}
@@ -256,13 +256,13 @@ native_track_failure:
static int
android_media_AudioRecord_start(JNIEnv *env, jobject thiz)
{
- AudioRecord *lpRecorder =
+ AudioRecord *lpRecorder =
(AudioRecord *)env->GetIntField(thiz, javaAudioRecordFields.nativeRecorderInJavaObj);
if (lpRecorder == NULL ) {
jniThrowException(env, "java/lang/IllegalStateException", NULL);
return AUDIORECORD_ERROR;
}
-
+
return android_media_translateRecorderErrorCode(lpRecorder->start());
}
@@ -271,7 +271,7 @@ android_media_AudioRecord_start(JNIEnv *env, jobject thiz)
static void
android_media_AudioRecord_stop(JNIEnv *env, jobject thiz)
{
- AudioRecord *lpRecorder =
+ AudioRecord *lpRecorder =
(AudioRecord *)env->GetIntField(thiz, javaAudioRecordFields.nativeRecorderInJavaObj);
if (lpRecorder == NULL ) {
jniThrowException(env, "java/lang/IllegalStateException", NULL);
@@ -288,7 +288,7 @@ static void android_media_AudioRecord_release(JNIEnv *env, jobject thiz) {
// serialize access. Ugly, but functional.
Mutex::Autolock lock(&sLock);
- AudioRecord *lpRecorder =
+ AudioRecord *lpRecorder =
(AudioRecord *)env->GetIntField(thiz, javaAudioRecordFields.nativeRecorderInJavaObj);
audiorecord_callback_cookie *lpCookie = (audiorecord_callback_cookie *)env->GetIntField(
thiz, javaAudioRecordFields.nativeCallbackCookie);
@@ -304,7 +304,7 @@ static void android_media_AudioRecord_release(JNIEnv *env, jobject thiz) {
lpRecorder->stop();
delete lpRecorder;
}
-
+
// delete the callback information
if (lpCookie) {
ALOGV("deleting lpCookie: %x\n", (int)lpCookie);
@@ -329,7 +329,7 @@ static jint android_media_AudioRecord_readInByteArray(JNIEnv *env, jobject thiz
AudioRecord *lpRecorder = NULL;
// get the audio recorder from which we'll read new audio samples
- lpRecorder =
+ lpRecorder =
(AudioRecord *)env->GetIntField(thiz, javaAudioRecordFields.nativeRecorderInJavaObj);
if (lpRecorder == NULL) {
ALOGE("Unable to retrieve AudioRecord object, can't record");
@@ -355,8 +355,8 @@ static jint android_media_AudioRecord_readInByteArray(JNIEnv *env, jobject thiz
// read the new audio data from the native AudioRecord object
ssize_t recorderBuffSize = lpRecorder->frameCount()*lpRecorder->frameSize();
- ssize_t readSize = lpRecorder->read(recordBuff + offsetInBytes,
- sizeInBytes > (jint)recorderBuffSize ?
+ ssize_t readSize = lpRecorder->read(recordBuff + offsetInBytes,
+ sizeInBytes > (jint)recorderBuffSize ?
(jint)recorderBuffSize : sizeInBytes );
env->ReleaseByteArrayElements(javaAudioData, recordBuff, 0);
@@ -381,41 +381,41 @@ static jint android_media_AudioRecord_readInDirectBuffer(JNIEnv *env, jobject t
//ALOGV("Entering android_media_AudioRecord_readInBuffer");
// get the audio recorder from which we'll read new audio samples
- lpRecorder =
+ lpRecorder =
(AudioRecord *)env->GetIntField(thiz, javaAudioRecordFields.nativeRecorderInJavaObj);
- if(lpRecorder==NULL)
+ if (lpRecorder==NULL)
return 0;
// direct buffer and direct access supported?
long capacity = env->GetDirectBufferCapacity(jBuffer);
- if(capacity == -1) {
+ if (capacity == -1) {
// buffer direct access is not supported
ALOGE("Buffer direct access is not supported, can't record");
return 0;
}
//ALOGV("capacity = %ld", capacity);
jbyte* nativeFromJavaBuf = (jbyte*) env->GetDirectBufferAddress(jBuffer);
- if(nativeFromJavaBuf==NULL) {
+ if (nativeFromJavaBuf==NULL) {
ALOGE("Buffer direct access is not supported, can't record");
return 0;
- }
+ }
// read new data from the recorder
- return (jint) lpRecorder->read(nativeFromJavaBuf,
+ return (jint) lpRecorder->read(nativeFromJavaBuf,
capacity < sizeInBytes ? capacity : sizeInBytes);
}
// ----------------------------------------------------------------------------
-static jint android_media_AudioRecord_set_marker_pos(JNIEnv *env, jobject thiz,
+static jint android_media_AudioRecord_set_marker_pos(JNIEnv *env, jobject thiz,
jint markerPos) {
-
+
AudioRecord *lpRecorder = (AudioRecord *)env->GetIntField(
thiz, javaAudioRecordFields.nativeRecorderInJavaObj);
-
+
if (lpRecorder) {
- return
- android_media_translateRecorderErrorCode( lpRecorder->setMarkerPosition(markerPos) );
+ return
+ android_media_translateRecorderErrorCode( lpRecorder->setMarkerPosition(markerPos) );
} else {
jniThrowException(env, "java/lang/IllegalStateException",
"Unable to retrieve AudioRecord pointer for setMarkerPosition()");
@@ -426,11 +426,11 @@ static jint android_media_AudioRecord_set_marker_pos(JNIEnv *env, jobject thiz,
// ----------------------------------------------------------------------------
static jint android_media_AudioRecord_get_marker_pos(JNIEnv *env, jobject thiz) {
-
+
AudioRecord *lpRecorder = (AudioRecord *)env->GetIntField(
thiz, javaAudioRecordFields.nativeRecorderInJavaObj);
uint32_t markerPos = 0;
-
+
if (lpRecorder) {
lpRecorder->getMarkerPosition(&markerPos);
return (jint)markerPos;
@@ -445,28 +445,28 @@ static jint android_media_AudioRecord_get_marker_pos(JNIEnv *env, jobject thiz)
// ----------------------------------------------------------------------------
static jint android_media_AudioRecord_set_pos_update_period(JNIEnv *env, jobject thiz,
jint period) {
-
+
AudioRecord *lpRecorder = (AudioRecord *)env->GetIntField(
thiz, javaAudioRecordFields.nativeRecorderInJavaObj);
-
+
if (lpRecorder) {
- return
- android_media_translateRecorderErrorCode( lpRecorder->setPositionUpdatePeriod(period) );
+ return
+ android_media_translateRecorderErrorCode( lpRecorder->setPositionUpdatePeriod(period) );
} else {
jniThrowException(env, "java/lang/IllegalStateException",
"Unable to retrieve AudioRecord pointer for setPositionUpdatePeriod()");
return AUDIORECORD_ERROR;
- }
+ }
}
// ----------------------------------------------------------------------------
static jint android_media_AudioRecord_get_pos_update_period(JNIEnv *env, jobject thiz) {
-
+
AudioRecord *lpRecorder = (AudioRecord *)env->GetIntField(
thiz, javaAudioRecordFields.nativeRecorderInJavaObj);
uint32_t period = 0;
-
+
if (lpRecorder) {
lpRecorder->getPositionUpdatePeriod(&period);
return (jint)period;
@@ -514,7 +514,7 @@ static JNINativeMethod gMethods[] = {
(void *)android_media_AudioRecord_setup},
{"native_finalize", "()V", (void *)android_media_AudioRecord_finalize},
{"native_release", "()V", (void *)android_media_AudioRecord_release},
- {"native_read_in_byte_array",
+ {"native_read_in_byte_array",
"([BII)I", (void *)android_media_AudioRecord_readInByteArray},
{"native_read_in_short_array",
"([SII)I", (void *)android_media_AudioRecord_readInShortArray},
@@ -541,7 +541,7 @@ static JNINativeMethod gMethods[] = {
// ----------------------------------------------------------------------------
-extern bool android_media_getIntConstantFromClass(JNIEnv* pEnv,
+extern bool android_media_getIntConstantFromClass(JNIEnv* pEnv,
jclass theClass, const char* className, const char* constName, int* constVal);
// ----------------------------------------------------------------------------
@@ -550,7 +550,7 @@ int register_android_media_AudioRecord(JNIEnv *env)
javaAudioRecordFields.postNativeEventInJava = NULL;
javaAudioRecordFields.nativeRecorderInJavaObj = NULL;
javaAudioRecordFields.nativeCallbackCookie = NULL;
-
+
// Get the AudioRecord class
jclass audioRecordClass = env->FindClass(kClassPathName);
@@ -569,7 +569,7 @@ int register_android_media_AudioRecord(JNIEnv *env)
// Get the variables
// mNativeRecorderInJavaObj
- javaAudioRecordFields.nativeRecorderInJavaObj =
+ javaAudioRecordFields.nativeRecorderInJavaObj =
env->GetFieldID(audioRecordClass,
JAVA_NATIVERECORDERINJAVAOBJ_FIELD_NAME, "I");
if (javaAudioRecordFields.nativeRecorderInJavaObj == NULL) {
@@ -592,13 +592,13 @@ int register_android_media_AudioRecord(JNIEnv *env)
ALOGE("Can't find %s", JAVA_AUDIOFORMAT_CLASS_NAME);
return -1;
}
- if ( !android_media_getIntConstantFromClass(env, audioFormatClass,
- JAVA_AUDIOFORMAT_CLASS_NAME,
+ if ( !android_media_getIntConstantFromClass(env, audioFormatClass,
+ JAVA_AUDIOFORMAT_CLASS_NAME,
JAVA_CONST_PCM16_NAME, &(javaAudioRecordFields.PCM16))
- || !android_media_getIntConstantFromClass(env, audioFormatClass,
- JAVA_AUDIOFORMAT_CLASS_NAME,
+ || !android_media_getIntConstantFromClass(env, audioFormatClass,
+ JAVA_AUDIOFORMAT_CLASS_NAME,
JAVA_CONST_PCM8_NAME, &(javaAudioRecordFields.PCM8)) ) {
- // error log performed in getIntConstantFromClass()
+ // error log performed in getIntConstantFromClass()
return -1;
}
diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp
index ee5eb7e..bff5994 100644
--- a/core/jni/android_media_AudioSystem.cpp
+++ b/core/jni/android_media_AudioSystem.cpp
@@ -268,7 +268,7 @@ static JNINativeMethod gMethods[] = {
int register_android_media_AudioSystem(JNIEnv *env)
{
AudioSystem::setErrorCallback(android_media_AudioSystem_error_callback);
-
+
return AndroidRuntime::registerNativeMethods(env,
kClassPathName, gMethods, NELEM(gMethods));
}
diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp
index 57f5d3d..d4ed06c 100644
--- a/core/jni/android_media_AudioTrack.cpp
+++ b/core/jni/android_media_AudioTrack.cpp
@@ -105,7 +105,7 @@ class AudioTrackJniStorage {
jint android_media_translateErrorCode(int code) {
- switch(code) {
+ switch (code) {
case NO_ERROR:
return AUDIOTRACK_SUCCESS;
case BAD_VALUE:
@@ -114,7 +114,7 @@ jint android_media_translateErrorCode(int code) {
return AUDIOTRACK_ERROR_INVALID_OPERATION;
default:
return AUDIOTRACK_ERROR;
- }
+ }
}
@@ -123,14 +123,14 @@ static void audioCallback(int event, void* user, void *info) {
if (event == AudioTrack::EVENT_MORE_DATA) {
// set size to 0 to signal we're not using the callback to write more data
AudioTrack::Buffer* pBuff = (AudioTrack::Buffer*)info;
- pBuff->size = 0;
-
+ pBuff->size = 0;
+
} else if (event == AudioTrack::EVENT_MARKER) {
audiotrack_callback_cookie *callbackInfo = (audiotrack_callback_cookie *)user;
JNIEnv *env = AndroidRuntime::getJNIEnv();
if (user && env) {
env->CallStaticVoidMethod(
- callbackInfo->audioTrack_class,
+ callbackInfo->audioTrack_class,
javaAudioTrackFields.postNativeEventInJava,
callbackInfo->audioTrack_ref, event, 0,0, NULL);
if (env->ExceptionCheck()) {
@@ -144,7 +144,7 @@ static void audioCallback(int event, void* user, void *info) {
JNIEnv *env = AndroidRuntime::getJNIEnv();
if (user && env) {
env->CallStaticVoidMethod(
- callbackInfo->audioTrack_class,
+ callbackInfo->audioTrack_class,
javaAudioTrackFields.postNativeEventInJava,
callbackInfo->audioTrack_ref, event, 0,0, NULL);
if (env->ExceptionCheck()) {
@@ -186,7 +186,7 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
}
int nbChannels = popcount(nativeChannelMask);
-
+
// check the stream type
audio_stream_type_t atStreamType;
switch (streamType) {
@@ -215,7 +215,7 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
// for the moment 8bitPCM in MODE_STATIC is not supported natively in the AudioTrack C++ class
// so we declare everything as 16bitPCM, the 8->16bit conversion for MODE_STATIC will be handled
// in android_media_AudioTrack_native_write_byte()
- if ((audioFormat == javaAudioTrackFields.PCM8)
+ if ((audioFormat == javaAudioTrackFields.PCM8)
&& (memoryMode == javaAudioTrackFields.MODE_STATIC)) {
ALOGV("android_media_AudioTrack_native_setup(): requesting MODE_STATIC for 8bit \
buff size of %dbytes, switching to 16bit, buff size of %dbytes",
@@ -230,9 +230,9 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
audio_format_t format = audioFormat == javaAudioTrackFields.PCM16 ?
AUDIO_FORMAT_PCM_16_BIT : AUDIO_FORMAT_PCM_8_BIT;
int frameCount = buffSizeInBytes / (nbChannels * bytesPerSample);
-
+
AudioTrackJniStorage* lpJniStorage = new AudioTrackJniStorage();
-
+
// initialize the callback information:
// this data will be passed with every AudioTrack callback
jclass clazz = env->GetObjectClass(thiz);
@@ -244,7 +244,7 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
lpJniStorage->mCallbackData.audioTrack_class = (jclass)env->NewGlobalRef(clazz);
// we use a weak reference so the AudioTrack object can be garbage collected.
lpJniStorage->mCallbackData.audioTrack_ref = env->NewGlobalRef(weak_this);
-
+
lpJniStorage->mStreamType = atStreamType;
if (jSession == NULL) {
@@ -269,7 +269,7 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
ALOGE("Error creating uninitialized AudioTrack");
goto native_track_failure;
}
-
+
// initialize the native AudioTrack object
if (memoryMode == javaAudioTrackFields.MODE_STREAM) {
@@ -285,15 +285,15 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
0,// shared mem
true,// thread can call Java
sessionId);// audio session ID
-
+
} else if (memoryMode == javaAudioTrackFields.MODE_STATIC) {
// AudioTrack is using shared memory
-
+
if (!lpJniStorage->allocSharedMem(buffSizeInBytes)) {
ALOGE("Error creating AudioTrack in static mode: error creating mem heap base");
goto native_init_failure;
}
-
+
lpTrack->set(
atStreamType,// stream type
sampleRateInHertz,
@@ -302,7 +302,7 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
frameCount,
AUDIO_POLICY_OUTPUT_FLAG_NONE,
audioCallback, &(lpJniStorage->mCallbackData),//callback, callback data (user));
- 0,// notificationFrames == 0 since not using EVENT_MORE_DATA to feed the AudioTrack
+ 0,// notificationFrames == 0 since not using EVENT_MORE_DATA to feed the AudioTrack
lpJniStorage->mMemBase,// shared mem
true,// thread can call Java
sessionId);// audio session ID
@@ -323,21 +323,21 @@ android_media_AudioTrack_native_setup(JNIEnv *env, jobject thiz, jobject weak_th
env->ReleasePrimitiveArrayCritical(jSession, nSession, 0);
nSession = NULL;
- // save our newly created C++ AudioTrack in the "nativeTrackInJavaObj" field
+ // save our newly created C++ AudioTrack in the "nativeTrackInJavaObj" field
// of the Java object (in mNativeTrackInJavaObj)
env->SetIntField(thiz, javaAudioTrackFields.nativeTrackInJavaObj, (int)lpTrack);
-
+
// save the JNI resources so we can free them later
//ALOGV("storing lpJniStorage: %x\n", (int)lpJniStorage);
env->SetIntField(thiz, javaAudioTrackFields.jniData, (int)lpJniStorage);
return AUDIOTRACK_SUCCESS;
-
+
// failures:
native_init_failure:
delete lpTrack;
env->SetIntField(thiz, javaAudioTrackFields.nativeTrackInJavaObj, 0);
-
+
native_track_failure:
if (nSession != NULL) {
env->ReleasePrimitiveArrayCritical(jSession, nSession, 0);
@@ -347,7 +347,7 @@ native_track_failure:
delete lpJniStorage;
env->SetIntField(thiz, javaAudioTrackFields.jniData, 0);
return AUDIOTRACK_ERROR_SETUP_NATIVEINITFAILED;
-
+
}
@@ -432,7 +432,7 @@ android_media_AudioTrack_set_volume(JNIEnv *env, jobject thiz, jfloat leftVol, j
// ----------------------------------------------------------------------------
static void android_media_AudioTrack_native_finalize(JNIEnv *env, jobject thiz) {
//ALOGV("android_media_AudioTrack_native_finalize jobject: %x\n", (int)thiz);
-
+
// delete the AudioTrack object
AudioTrack *lpTrack = (AudioTrack *)env->GetIntField(
thiz, javaAudioTrackFields.nativeTrackInJavaObj);
@@ -441,7 +441,7 @@ static void android_media_AudioTrack_native_finalize(JNIEnv *env, jobject thiz)
lpTrack->stop();
delete lpTrack;
}
-
+
// delete the JNI data
AudioTrackJniStorage* pJniStorage = (AudioTrackJniStorage *)env->GetIntField(
thiz, javaAudioTrackFields.jniData);
@@ -456,7 +456,7 @@ static void android_media_AudioTrack_native_finalize(JNIEnv *env, jobject thiz)
// ----------------------------------------------------------------------------
static void android_media_AudioTrack_native_release(JNIEnv *env, jobject thiz) {
-
+
// do everything a call to finalize would
android_media_AudioTrack_native_finalize(env, thiz);
// + reset the native resources in the Java object so any attempt to access
@@ -493,7 +493,7 @@ jint writeToTrack(AudioTrack* pTrack, jint audioFormat, jbyte* data,
int count = sizeInBytes;
int16_t *dst = (int16_t *)pTrack->sharedBuffer()->pointer();
const int8_t *src = (const int8_t *)(data + offsetInBytes);
- while(count--) {
+ while (count--) {
*dst++ = (int16_t)(*src++^0x80) << 8;
}
// even though we wrote 2*sizeInBytes, we only report sizeInBytes as written to hide
@@ -514,7 +514,7 @@ static jint android_media_AudioTrack_native_write_byte(JNIEnv *env, jobject thi
AudioTrack *lpTrack = NULL;
//ALOGV("android_media_AudioTrack_native_write_byte(offset=%d, sizeInBytes=%d) called",
// offsetInBytes, sizeInBytes);
-
+
// get the audio track to load with samples
lpTrack = (AudioTrack *)env->GetIntField(thiz, javaAudioTrackFields.nativeTrackInJavaObj);
if (lpTrack == NULL) {
@@ -599,7 +599,7 @@ static jint android_media_AudioTrack_get_playback_rate(JNIEnv *env, jobject thi
thiz, javaAudioTrackFields.nativeTrackInJavaObj);
if (lpTrack) {
- return (jint) lpTrack->getSampleRate();
+ return (jint) lpTrack->getSampleRate();
} else {
jniThrowException(env, "java/lang/IllegalStateException",
"Unable to retrieve AudioTrack pointer for getSampleRate()");
@@ -609,14 +609,14 @@ static jint android_media_AudioTrack_get_playback_rate(JNIEnv *env, jobject thi
// ----------------------------------------------------------------------------
-static jint android_media_AudioTrack_set_marker_pos(JNIEnv *env, jobject thiz,
+static jint android_media_AudioTrack_set_marker_pos(JNIEnv *env, jobject thiz,
jint markerPos) {
-
+
AudioTrack *lpTrack = (AudioTrack *)env->GetIntField(
thiz, javaAudioTrackFields.nativeTrackInJavaObj);
-
+
if (lpTrack) {
- return android_media_translateErrorCode( lpTrack->setMarkerPosition(markerPos) );
+ return android_media_translateErrorCode( lpTrack->setMarkerPosition(markerPos) );
} else {
jniThrowException(env, "java/lang/IllegalStateException",
"Unable to retrieve AudioTrack pointer for setMarkerPosition()");
@@ -627,11 +627,11 @@ static jint android_media_AudioTrack_set_marker_pos(JNIEnv *env, jobject thiz,
// ----------------------------------------------------------------------------
static jint android_media_AudioTrack_get_marker_pos(JNIEnv *env, jobject thiz) {
-
+
AudioTrack *lpTrack = (AudioTrack *)env->GetIntField(
thiz, javaAudioTrackFields.nativeTrackInJavaObj);
uint32_t markerPos = 0;
-
+
if (lpTrack) {
lpTrack->getMarkerPosition(&markerPos);
return (jint)markerPos;
@@ -646,27 +646,27 @@ static jint android_media_AudioTrack_get_marker_pos(JNIEnv *env, jobject thiz)
// ----------------------------------------------------------------------------
static jint android_media_AudioTrack_set_pos_update_period(JNIEnv *env, jobject thiz,
jint period) {
-
+
AudioTrack *lpTrack = (AudioTrack *)env->GetIntField(
thiz, javaAudioTrackFields.nativeTrackInJavaObj);
-
+
if (lpTrack) {
- return android_media_translateErrorCode( lpTrack->setPositionUpdatePeriod(period) );
+ return android_media_translateErrorCode( lpTrack->setPositionUpdatePeriod(period) );
} else {
jniThrowException(env, "java/lang/IllegalStateException",
"Unable to retrieve AudioTrack pointer for setPositionUpdatePeriod()");
return AUDIOTRACK_ERROR;
- }
+ }
}
// ----------------------------------------------------------------------------
static jint android_media_AudioTrack_get_pos_update_period(JNIEnv *env, jobject thiz) {
-
+
AudioTrack *lpTrack = (AudioTrack *)env->GetIntField(
thiz, javaAudioTrackFields.nativeTrackInJavaObj);
uint32_t period = 0;
-
+
if (lpTrack) {
lpTrack->getPositionUpdatePeriod(&period);
return (jint)period;
@@ -679,12 +679,12 @@ static jint android_media_AudioTrack_get_pos_update_period(JNIEnv *env, jobject
// ----------------------------------------------------------------------------
-static jint android_media_AudioTrack_set_position(JNIEnv *env, jobject thiz,
+static jint android_media_AudioTrack_set_position(JNIEnv *env, jobject thiz,
jint position) {
-
+
AudioTrack *lpTrack = (AudioTrack *)env->GetIntField(
thiz, javaAudioTrackFields.nativeTrackInJavaObj);
-
+
if (lpTrack) {
return android_media_translateErrorCode( lpTrack->setPosition(position) );
} else {
@@ -697,11 +697,11 @@ static jint android_media_AudioTrack_set_position(JNIEnv *env, jobject thiz,
// ----------------------------------------------------------------------------
static jint android_media_AudioTrack_get_position(JNIEnv *env, jobject thiz) {
-
+
AudioTrack *lpTrack = (AudioTrack *)env->GetIntField(
thiz, javaAudioTrackFields.nativeTrackInJavaObj);
uint32_t position = 0;
-
+
if (lpTrack) {
lpTrack->getPosition(&position);
return (jint)position;
@@ -944,12 +944,12 @@ int register_android_media_AudioTrack(JNIEnv *env)
// Get the memory mode constants
if ( !android_media_getIntConstantFromClass(env, audioTrackClass,
- kClassPathName,
+ kClassPathName,
JAVA_CONST_MODE_STATIC_NAME, &(javaAudioTrackFields.MODE_STATIC))
|| !android_media_getIntConstantFromClass(env, audioTrackClass,
- kClassPathName,
+ kClassPathName,
JAVA_CONST_MODE_STREAM_NAME, &(javaAudioTrackFields.MODE_STREAM)) ) {
- // error log performed in android_media_getIntConstantFromClass()
+ // error log performed in android_media_getIntConstantFromClass()
return -1;
}
@@ -960,16 +960,16 @@ int register_android_media_AudioTrack(JNIEnv *env)
ALOGE("Can't find %s", JAVA_AUDIOFORMAT_CLASS_NAME);
return -1;
}
- if ( !android_media_getIntConstantFromClass(env, audioFormatClass,
- JAVA_AUDIOFORMAT_CLASS_NAME,
+ if ( !android_media_getIntConstantFromClass(env, audioFormatClass,
+ JAVA_AUDIOFORMAT_CLASS_NAME,
JAVA_CONST_PCM16_NAME, &(javaAudioTrackFields.PCM16))
- || !android_media_getIntConstantFromClass(env, audioFormatClass,
- JAVA_AUDIOFORMAT_CLASS_NAME,
+ || !android_media_getIntConstantFromClass(env, audioFormatClass,
+ JAVA_AUDIOFORMAT_CLASS_NAME,
JAVA_CONST_PCM8_NAME, &(javaAudioTrackFields.PCM8)) ) {
- // error log performed in android_media_getIntConstantFromClass()
+ // error log performed in android_media_getIntConstantFromClass()
return -1;
}
-
+
return AndroidRuntime::registerNativeMethods(env, kClassPathName, gMethods, NELEM(gMethods));
}
diff --git a/core/jni/android_media_JetPlayer.cpp b/core/jni/android_media_JetPlayer.cpp
index 9f9bedb..6fedc6b 100644
--- a/core/jni/android_media_JetPlayer.cpp
+++ b/core/jni/android_media_JetPlayer.cpp
@@ -56,7 +56,7 @@ static void
jetPlayerEventCallback(int what, int arg1=0, int arg2=0, void* javaTarget = NULL)
{
JNIEnv *env = AndroidRuntime::getJNIEnv();
- if(env) {
+ if (env) {
env->CallStaticVoidMethod(
javaJetPlayerFields.jetClass, javaJetPlayerFields.postNativeEventInJava,
javaTarget,
@@ -84,7 +84,7 @@ android_media_JetPlayer_setup(JNIEnv *env, jobject thiz, jobject weak_this,
EAS_RESULT result = lpJet->init();
- if(result==EAS_SUCCESS) {
+ if (result==EAS_SUCCESS) {
// save our newly created C++ JetPlayer in the "nativePlayerInJavaObj" field
// of the Java object (in mNativePlayerInJavaObj)
env->SetIntField(thiz, javaJetPlayerFields.nativePlayerInJavaObj, (int)lpJet);
@@ -105,7 +105,7 @@ android_media_JetPlayer_finalize(JNIEnv *env, jobject thiz)
ALOGV("android_media_JetPlayer_finalize(): entering.");
JetPlayer *lpJet = (JetPlayer *)env->GetIntField(
thiz, javaJetPlayerFields.nativePlayerInJavaObj);
- if(lpJet != NULL) {
+ if (lpJet != NULL) {
lpJet->release();
delete lpJet;
}
@@ -148,7 +148,7 @@ android_media_JetPlayer_loadFromFile(JNIEnv *env, jobject thiz, jstring path)
EAS_RESULT result = lpJet->loadFromFile(pathStr);
env->ReleaseStringUTFChars(path, pathStr);
- if(result==EAS_SUCCESS) {
+ if (result==EAS_SUCCESS) {
//ALOGV("android_media_JetPlayer_openFile(): file successfully opened");
return JNI_TRUE;
} else {
@@ -178,7 +178,7 @@ android_media_JetPlayer_loadFromFileD(JNIEnv *env, jobject thiz,
EAS_RESULT result = lpJet->loadFromFD(jniGetFDFromFileDescriptor(env, fileDescriptor),
(long long)offset, (long long)length); // cast params to types used by EAS_FILE
- if(result==EAS_SUCCESS) {
+ if (result==EAS_SUCCESS) {
ALOGV("android_media_JetPlayer_openFileDescr(): file successfully opened");
return JNI_TRUE;
} else {
@@ -200,7 +200,7 @@ android_media_JetPlayer_closeFile(JNIEnv *env, jobject thiz)
"Unable to retrieve JetPlayer pointer for closeFile()");
}
- if( lpJet->closeFile()==EAS_SUCCESS) {
+ if (lpJet->closeFile()==EAS_SUCCESS) {
//ALOGV("android_media_JetPlayer_closeFile(): file successfully closed");
return JNI_TRUE;
} else {
@@ -222,7 +222,7 @@ android_media_JetPlayer_play(JNIEnv *env, jobject thiz)
}
EAS_RESULT result = lpJet->play();
- if( result==EAS_SUCCESS) {
+ if (result==EAS_SUCCESS) {
//ALOGV("android_media_JetPlayer_play(): play successful");
return JNI_TRUE;
} else {
@@ -245,11 +245,11 @@ android_media_JetPlayer_pause(JNIEnv *env, jobject thiz)
}
EAS_RESULT result = lpJet->pause();
- if( result==EAS_SUCCESS) {
+ if (result==EAS_SUCCESS) {
//ALOGV("android_media_JetPlayer_pause(): pause successful");
return JNI_TRUE;
} else {
- if(result==EAS_ERROR_QUEUE_IS_EMPTY) {
+ if (result==EAS_ERROR_QUEUE_IS_EMPTY) {
ALOGV("android_media_JetPlayer_pause(): paused with an empty queue");
return JNI_TRUE;
} else
@@ -275,7 +275,7 @@ android_media_JetPlayer_queueSegment(JNIEnv *env, jobject thiz,
EAS_RESULT result
= lpJet->queueSegment(segmentNum, libNum, repeatCount, transpose, muteFlags, userID);
- if(result==EAS_SUCCESS) {
+ if (result==EAS_SUCCESS) {
//ALOGV("android_media_JetPlayer_queueSegment(): segment successfully queued");
return JNI_TRUE;
} else {
@@ -311,7 +311,7 @@ android_media_JetPlayer_queueSegmentMuteArray(JNIEnv *env, jobject thiz,
EAS_U32 muteMask=0;
int maxTracks = lpJet->getMaxTracks();
for (jint trackIndex=0; trackIndex<maxTracks; trackIndex++) {
- if(muteTracks[maxTracks-1-trackIndex]==JNI_TRUE)
+ if (muteTracks[maxTracks-1-trackIndex]==JNI_TRUE)
muteMask = (muteMask << 1) | 0x00000001;
else
muteMask = muteMask << 1;
@@ -321,7 +321,7 @@ android_media_JetPlayer_queueSegmentMuteArray(JNIEnv *env, jobject thiz,
result = lpJet->queueSegment(segmentNum, libNum, repeatCount, transpose, muteMask, userID);
env->ReleaseBooleanArrayElements(muteArray, muteTracks, 0);
- if(result==EAS_SUCCESS) {
+ if (result==EAS_SUCCESS) {
//ALOGV("android_media_JetPlayer_queueSegmentMuteArray(): segment successfully queued");
return JNI_TRUE;
} else {
@@ -346,7 +346,7 @@ android_media_JetPlayer_setMuteFlags(JNIEnv *env, jobject thiz,
EAS_RESULT result;
result = lpJet->setMuteFlags(muteFlags, bSync==JNI_TRUE ? true : false);
- if(result==EAS_SUCCESS) {
+ if (result==EAS_SUCCESS) {
//ALOGV("android_media_JetPlayer_setMuteFlags(): mute flags successfully updated");
return JNI_TRUE;
} else {
@@ -380,7 +380,7 @@ android_media_JetPlayer_setMuteArray(JNIEnv *env, jobject thiz,
EAS_U32 muteMask=0;
int maxTracks = lpJet->getMaxTracks();
for (jint trackIndex=0; trackIndex<maxTracks; trackIndex++) {
- if(muteTracks[maxTracks-1-trackIndex]==JNI_TRUE)
+ if (muteTracks[maxTracks-1-trackIndex]==JNI_TRUE)
muteMask = (muteMask << 1) | 0x00000001;
else
muteMask = muteMask << 1;
@@ -390,7 +390,7 @@ android_media_JetPlayer_setMuteArray(JNIEnv *env, jobject thiz,
result = lpJet->setMuteFlags(muteMask, bSync==JNI_TRUE ? true : false);
env->ReleaseBooleanArrayElements(muteArray, muteTracks, 0);
- if(result==EAS_SUCCESS) {
+ if (result==EAS_SUCCESS) {
//ALOGV("android_media_JetPlayer_setMuteArray(): mute flags successfully updated");
return JNI_TRUE;
} else {
@@ -416,7 +416,7 @@ android_media_JetPlayer_setMuteFlag(JNIEnv *env, jobject thiz,
EAS_RESULT result;
result = lpJet->setMuteFlag(trackId,
muteFlag==JNI_TRUE ? true : false, bSync==JNI_TRUE ? true : false);
- if(result==EAS_SUCCESS) {
+ if (result==EAS_SUCCESS) {
//ALOGV("android_media_JetPlayer_setMuteFlag(): mute flag successfully updated for track %d", trackId);
return JNI_TRUE;
} else {
@@ -440,7 +440,7 @@ android_media_JetPlayer_triggerClip(JNIEnv *env, jobject thiz, jint clipId)
EAS_RESULT result;
result = lpJet->triggerClip(clipId);
- if(result==EAS_SUCCESS) {
+ if (result==EAS_SUCCESS) {
//ALOGV("android_media_JetPlayer_triggerClip(): triggerClip successful for clip %d", clipId);
return JNI_TRUE;
} else {
@@ -463,7 +463,7 @@ android_media_JetPlayer_clearQueue(JNIEnv *env, jobject thiz)
}
EAS_RESULT result = lpJet->clearQueue();
- if(result==EAS_SUCCESS) {
+ if (result==EAS_SUCCESS) {
//ALOGV("android_media_JetPlayer_clearQueue(): clearQueue successful");
return JNI_TRUE;
} else {
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp
index 30d4e20..ce2cdee 100644
--- a/core/jni/android_view_Surface.cpp
+++ b/core/jni/android_view_Surface.cpp
@@ -251,8 +251,16 @@ static void Surface_init(
static void Surface_initFromSurfaceTexture(
JNIEnv* env, jobject clazz, jobject jst)
{
- sp<ISurfaceTexture> st(SurfaceTexture_getSurfaceTexture(env, jst));
- sp<Surface> surface(new Surface(st));
+ sp<SurfaceTexture> st(SurfaceTexture_getSurfaceTexture(env, jst));
+
+ if (st == NULL) {
+ jniThrowException(env, "java/lang/IllegalArgumentException",
+ "SurfaceTexture has already been released");
+ return;
+ }
+ sp<ISurfaceTexture> bq = st->getBufferQueue();
+
+ sp<Surface> surface(new Surface(bq));
if (surface == NULL) {
jniThrowException(env, OutOfResourcesException, NULL);
return;
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 8f03fe0..d1e3642 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -248,6 +248,21 @@
android:label="@string/permlab_writeContacts"
android:description="@string/permdesc_writeContacts" />
+ <!-- Allows an application to read the user's call log. -->
+ <permission android:name="android.permission.READ_CALL_LOG"
+ android:permissionGroup="android.permission-group.PERSONAL_INFO"
+ android:protectionLevel="dangerous"
+ android:label="@string/permlab_readCallLog"
+ android:description="@string/permdesc_readCallLog" />
+
+ <!-- Allows an application to write (but not read) the user's
+ contacts data. -->
+ <permission android:name="android.permission.WRITE_CALL_LOG"
+ android:permissionGroup="android.permission-group.PERSONAL_INFO"
+ android:protectionLevel="dangerous"
+ android:label="@string/permlab_writeCallLog"
+ android:description="@string/permdesc_writeCallLog" />
+
<!-- Allows an application to read the user's personal profile data. -->
<permission android:name="android.permission.READ_PROFILE"
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 48f4606..49b31b4 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Laat die program toe om enige private woorde, name en frases te lees wat die gebruiker in die gebruikerwoordeboek gestoor het."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"skryf na gebruikergedefinieerde woordeboek"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Laat die program toe om nuwe woorde in die gebruikerwoordeboek te skryf."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"verander/vee uit USB-berging se inhoud"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"wysig/vee uit SD-kaart se inhoud"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Laat die program toe om die USB-geheue te skryf."</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index b055634..d1e9122 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">" ተጠቃሚዠበተጠቃሚ መá‹áŒˆá‰  ቃላት ሊያከማች የቻለá‹áŠ• ማንኛá‹áˆ የáŒáˆ ቃላትᣠስሞችá£áŠ¥áŠ“ ሀረጎች ለማንበብ ለመተáŒá‰ áˆªá‹«á‹ á‹­áˆá‰…ዳሉá¡á¡"</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"በተጠቃሚ በተወሰአመá‹áŒˆá‰  ቃላት áƒá"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"በተጠቃሚ መá‹áŒˆá‰  ቃላት á‹áˆµáŒ¥ አዲስ ቃሠእንዲጽá ለመተáŒá‰ áˆªá‹«á‹ á‹­áˆá‰…ዳሉá¡á¡"</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"የUSB ማከማቻ ይዘቶችን ቀይር/ሰርá‹"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"የSD ካርድ ይዘትንቀይር/ሰርá‹"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"ወደ USB ማህደረ ትá‹áˆµá‰³á‹ ለመáƒá ለመተáŒá‰ áˆªá‹«á‹ á‹­áˆá‰…ዳሉá¡á¡"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 193157b..8775505 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"للسماح للتطبيق بقراءة أي كلمات وأسماء وعبارات خاصة ربما خزنها المستخدم ÙÙŠ قاموس المستخدم."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"كتابة إلى القاموس المعرّ٠بواسطة المستخدم"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"للسماح للتطبيق بكتابة كلمات جديدة ÙÙŠ قاموس المستخدم."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"تعديل/حذ٠محتويات وحدة تخزين USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"تعديل/حذ٠محتويات بطاقة SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"للسماح للتطبيق بالكتابة إلى وحدة تخزين USB."</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index a37e231..eebf04e 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"ДазвалÑе прыкладанню Ñчытваць Ð»ÑŽÐ±Ñ‹Ñ Ð¿Ñ€Ñ‹Ð²Ð°Ñ‚Ð½Ñ‹Ñ Ñловы, імёны Ñ– фразы, ÑÐºÑ–Ñ ÐºÐ°Ñ€Ñ‹Ñтальнік можа захоўваць у карыÑтальніцкім Ñлоўніку."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"запіÑаць у карыÑтальніцкі Ñлоўнік"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"ДазвалÑе прыкладаннÑм запіÑваць Ð½Ð¾Ð²Ñ‹Ñ Ñловы Ñž карыÑтальніцкі Ñлоўнік."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"змÑніць/выдаліць змеÑціва USB-назапашвальнiка"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"змÑнÑць/выдалÑць змеÑціва SD-карты"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"ДазвалÑе прыкладанÑм выконваць Ð·Ð°Ð¿Ñ–Ñ Ð²Ð° USB-назапашвальнік."</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index c277ee9..583d21a 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Разрешава на приложението да чете чаÑтни думи, имена и фрази, които потребителÑÑ‚ може да е Ñъхранил в потребителÑÐºÐ¸Ñ Ñ€ÐµÑ‡Ð½Ð¸Ðº."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"Ð·Ð°Ð¿Ð¸Ñ Ð² Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ€Ð°Ð½Ð¸Ñ Ð¾Ñ‚ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ñ€ÐµÑ‡Ð½Ð¸Ðº"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Разрешава на приложението да запиÑва нови думи в потребителÑÐºÐ¸Ñ Ñ€ÐµÑ‡Ð½Ð¸Ðº."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"промÑна/изтриване на Ñъдържанието в USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"промÑна/изтриване на Ñъдържанието на SD картата"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Разрешава на приложението да запиÑва в USB."</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 189225e..36288c5 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Permet que l\'aplicació llegeixi les paraules, els noms i les frases privats que l\'usuari pot haver emmagatzemat al seu diccionari."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"escriu al diccionari definit per l\'usuari"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permet que l\'aplicació escrigui paraules noves al diccionari de l\'usuari."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"modificar/esborrar contingut USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modificar/esborrar contingut de la targeta SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permet que l\'aplicació escrigui a l\'emmagatzematge USB."</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 389a672..2cda293 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Umožní aplikaci Äíst soukromá slova, jména a fráze, která uživatel mohl uložit do svého slovníku."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"zápis do slovníku definovaného uživatelem"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Umožňuje aplikaci zapisovat nová slova do uživatelského slovníku."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"úprava/mazání obsahu úložiště USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"změna/smazání obsahu karty SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Umožňuje aplikaci zapisovat do úložiště USB."</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 3ca0534..4f9f0f1 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Tillader, at appen kan læse alle private ord, navne og sætninger, som brugeren kan have gemt i brugerordbogen."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"skrive til brugerordbogen"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Tillader, at appen kan skrive nye ord i brugerordbogen."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"rette/slette i USB-lager"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"ret/slet indholdet på SD-kortet"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Lader appen skrive til USB."</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 72ac55f..b064243 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Ermöglicht der App, alle privaten Wörter, Namen und Ausdrücke zu lesen, die ein Nutzer in seinem Wörterbuch gespeichert hat"</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"In benutzerdefiniertes Wörterbuch schreiben"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Ermöglicht der App, dem Nutzerwörterbuch neue Einträge hinzuzufügen"</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"USB-Speicherinhalt ändern/löschen"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"SD-Karten-Inhalt ändern/löschen"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Ermöglicht der App, in den USB-Speicher zu schreiben"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 0e5dd10..b05cbe5 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"ΕπιτÏέπει στην εφαÏμογή την ανάγνωση ιδιωτικών λέξεων, ονομάτων και φÏάσεων, τα οποία ο χÏήστης ενδέχεται να έχει αποθηκεÏσει στο λεξικό χÏήστη."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"εγγÏαφή σε λεξικό καθοÏισμένο από τον χÏήστη"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"ΕπιτÏέπει στην εφαÏμογή την εγγÏαφή νέων λέξεων στο λεξικό χÏήστη."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"Ï„Ïοπ./διαγÏ. πεÏ. απ. χώÏ. USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"Ï„Ïοποποίηση/διαγÏαφή πεÏιεχομένων κάÏτας SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"ΕπιτÏέπει στην εφαÏμογή την εγγÏαφή στον αποθηκευτικό χώÏο USB."</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index e7ff973..38078a6 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Allows the app to read any private words, names and phrases that the user may have stored in the user dictionary."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"write to user-defined dictionary"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Allows the app to write new words into the user dictionary."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"modify/delete USB storage contents"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modify/delete SD card contents"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Allows the app to write to the USB storage."</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 8e36948..d1dc89f 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Permite que la aplicación lea cualquier palabra, nombre o frase de carácter privado que el usuario haya almacenado en su diccionario."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"agregar al diccionario definido por el usuario"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permite que la aplicación ingrese palabras nuevas en el diccionario del usuario."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"modificar o eliminar el contenido del almacenamiento USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modificar/eliminar el contenido de la tarjeta SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permite que la aplicación escriba en el almacenamiento USB."</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index a4638fa..c39617a 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Permite que la aplicación lea cualquier palabra, nombre o frase de carácter privado que el usuario haya almacenado en su diccionario."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"añadir al diccionario definido por el usuario"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permite que la aplicación escriba palabras nuevas en el diccionario de usuario."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"modificar/borrar contenido USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modificar/eliminar contenido de la tarjeta SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permite escribir en el almacenamiento USB."</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 697c8f1..07aef03 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Võimaldab rakendusel lugeda kõiki privaatseid sõnu, nimesid ja fraase, mille kasutaja võis salvestada kasutajasõnastikku."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"Kasutaja määratud sõnastikku kirjutamine"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Võimaldab rakendusel kirjutada kasutajasõnastikku uusi sõnu."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"USB-seadme sisu muutm./kustut."</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"muuda/kustuta SD-kaardi sisu"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Võimaldab rakendusel kirjutada USB-mäluseadmele."</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index a4a9bff..96201c6 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"به برنامه اجازه می‎دهد هر گونه کلمه، نام، عبارت خصوصی را Ú©Ù‡ کاربر در Ùرهنگ لغت خود ذخیره کرده است بخواند."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"نوشتن در Ùرهنگ لغت تعری٠شده از سوی کاربر"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"به برنامه اجازه می‎دهد تا کلمات جدید را در Ùهرست کاربر بنویسد."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"اصلاح/حذ٠محتواهای حاÙظه USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"اصلاح کردن/حذ٠محتویات کارت SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"به برنامه اجازه می‎دهد تا در حاÙظه USB بنویسد."</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 1b8b18a..dfdc3fb 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Antaa sovelluksen lukea yksityisiä sanoja, nimiä tai ilmauksia, joita käyttäjä on voinut tallentaa käyttäjän sanakirjaan."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"käyttäjän määrittelemään sanakirjaan kirjoittaminen"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Antaa sovelluksen kirjoittaa uusia sanoja käyttäjän sanakirjaan."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"muokkaa/poista USB-sisältöä"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"muokkaa/poista SD-kortin sisältöä"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Antaa sovelluksen kirjoittaa USB-tallennustilaan."</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index b19a7de..3abc1b4 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Permet à l\'application de lire tous les mots, noms et expressions privés que l\'utilisateur a pu enregistrer dans son dictionnaire personnel."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"enregistrer dans le dictionnaire défini par l\'utilisateur"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permet à l\'application d\'enregistrer de nouveaux mots dans le dictionnaire personnel de l\'utilisateur."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"Modifier/Supprimer contenu mémoire USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modifier/supprimer le contenu de la carte SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permet à l\'application de modifier le contenu de la mémoire de stockage USB."</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index d4b921f..5acca98 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"à¤à¤ªà¥â€à¤²à¤¿à¤•à¥‡à¤¶à¤¨ को à¤à¤¸à¥‡ निजी शबà¥â€à¤¦à¥‹à¤‚, नामों और वाकà¥à¤¯à¤¾à¤‚शों को पढ़ने देता है जो संभवत: उपयोगकरà¥à¤¤à¤¾ दà¥à¤µà¤¾à¤°à¤¾ उपयोगकरà¥à¤¤à¤¾ â€à¤¡à¤¿à¤•à¥à¤¶à¤¨à¤°à¥€ में संगà¥à¤°à¤¹à¥€à¤¤ किठगठहों."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"उपयोगकरà¥à¤¤à¤¾-निरà¥à¤§à¤¾à¤°à¤¿à¤¤ डिकà¥à¤¶à¤¨à¤°à¥€ में लिखें"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"à¤à¤ªà¥à¤²à¤¿à¤•à¥‡à¤¶à¤¨ को उपयोगकरà¥à¤¤à¤¾ डिकà¥à¤¶à¤¨à¤°à¥€ में नठशबà¥à¤¦ लिखने देता है."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"USB संगà¥à¤°à¤¹à¤£ सामगà¥à¤°à¤¿à¤¯à¥‹à¤‚ को संशोधित करें/हटाà¤à¤‚"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"SD कारà¥à¤¡ सामगà¥à¤°à¤¿à¤¯à¤¾à¤‚ संशोधित करें/हटाà¤à¤‚"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"à¤à¤ªà¥à¤²à¤¿. को USB संगà¥à¤°à¤¹à¤£ में लिखने देता है."</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index fbd3a3d..671bc8d 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Aplikaciji omogućuje Äitanje svih privatnih rijeÄi, imena i izraza koje je korisnik pohranio u korisniÄkom rjeÄniku."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"pisanje u korisniÄki definiran rjeÄnik"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Aplikaciji omogućuje pisanje novih rijeÄi u korisniÄki rjeÄnik."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"izmjeni/briši sadržaje memorije USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"izmjena/brisanje sadržaja SD kartice"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Dopušta pisanje u USB pohranu."</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index c6190fd..20280b3 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Lehetővé teszi az alkalmazás számára, hogy olvassa a felhasználói szótárban tárolt saját szavakat, neveket és kifejezéseket."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"a felhasználó által definiált szótár írása"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Lehetővé teszi az alkalmazás számára, hogy új szavakat írjon a felhasználói szótárba."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"USB-tár tartalmának módosítása és törlése"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"az SD-kártya tartalmának módosítása és törlése"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Az alkalmazás USB-tárra írhat."</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index d2d4ece..0807c4d 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -63,10 +63,10 @@
<string name="RuacMmi" msgid="7827887459138308886">"Penolakan panggilan yang tidak diinginkan"</string>
<string name="CndMmi" msgid="3116446237081575808">"Pengiriman nomor panggilan"</string>
<string name="DndMmi" msgid="1265478932418334331">"Jangan ganggu"</string>
- <string name="CLIRDefaultOnNextCallOn" msgid="429415409145781923">"Nomor penelepon bawaan \"dibatasi\". Panggilan selanjutnya: Dibatasi"</string>
- <string name="CLIRDefaultOnNextCallOff" msgid="3092918006077864624">"Nomor pengguna bawaan \"dibatasi\". Panggilan selanjutnya: Tidak dibatasi."</string>
- <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"Nomor penelepon bawaan tidak dibatasi. Panggilan selanjutnya: Dibatasi"</string>
- <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"Nomor penelepon bawaan tidak dibatasi. Panggilan selanjutnya: Tidak dibatasi"</string>
+ <string name="CLIRDefaultOnNextCallOn" msgid="429415409145781923">"Nomor penelepon default \"dibatasi\". Panggilan selanjutnya: Dibatasi"</string>
+ <string name="CLIRDefaultOnNextCallOff" msgid="3092918006077864624">"Nomor pengguna default \"dibatasi\". Panggilan selanjutnya: Tidak dibatasi."</string>
+ <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"Nomor penelepon default tidak dibatasi. Panggilan selanjutnya: Dibatasi"</string>
+ <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"Nomor penelepon default tidak dibatasi. Panggilan selanjutnya: Tidak dibatasi"</string>
<string name="serviceNotProvisioned" msgid="8614830180508686666">"Layanan tidak diperlengkapi."</string>
<string name="CLIRPermanent" msgid="3377371145926835671">"Anda tidak dapat mengubah setelan nomor penelepon."</string>
<string name="RestrictedChangedTitle" msgid="5592189398956187498">"Akses terbatas berubah"</string>
@@ -220,7 +220,7 @@
<string name="permlab_setDebugApp" msgid="3022107198686584052">"mengaktifkan debugging apl"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Mengizinkan apl mengaktifkan debugging untuk apl lain. Apl berbahaya dapat menggunakan cara ini untuk menutup apl lain."</string>
<string name="permlab_changeConfiguration" msgid="8214475779521218295">"ubah setelan UI Anda"</string>
- <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Mengizinkan apl mengubah konfigurasi saat ini, misalnya lokal atau ukuran fon keseluruhan."</string>
+ <string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Mengizinkan apl mengubah konfigurasi saat ini, misalnya lokal atau ukuran font keseluruhan."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"aktifkan mode mobil"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Mengizinkan apl mengaktifkan mode mobil."</string>
<string name="permlab_killBackgroundProcesses" msgid="8373714752793061963">"hentikan proses latar belakang"</string>
@@ -434,7 +434,7 @@
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Mengizinkan apl menyetel wallpaper sistem."</string>
<string name="permlab_setWallpaperHints" msgid="3600721069353106851">"atur petunjuk ukuran wallpaper"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Mengizinkan apl menyetel petunjuk ukuran wallpaper sistem."</string>
- <string name="permlab_masterClear" msgid="2315750423139697397">"setel ulang sistem ke setelan bawaan pabrik"</string>
+ <string name="permlab_masterClear" msgid="2315750423139697397">"setel ulang sistem ke setelan default pabrik"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Mengizinkan apl menyetel ulang sistem ke setelan pabrik sepenuhnya, menghapus semua data, konfigurasi, dan apl yang terpasang."</string>
<string name="permlab_setTime" msgid="2021614829591775646">"atur waktu"</string>
<string name="permdesc_setTime" product="tablet" msgid="1896341438151152881">"Mengizinkan apl mengubah waktu pada jam tablet."</string>
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Mengizinkan apl membaca kata, nama, dan frasa pribadi apa pun yang mungkin disimpan oleh pengguna di kamus pengguna."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"menulis ke kamus yang dibuat pengguna"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Mengizinkan apl menulis kata-kata baru ke dalam kamus pengguna."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"ubah/hapus konten penyimpanan USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"ubah/hapus isi kartu SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Mengizinkan apl menulis ke penyimpanan USB."</string>
@@ -695,10 +703,10 @@
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"Anda telah <xliff:g id="NUMBER_0">%d</xliff:g> kali salah mengetik PIN. "\n\n"Coba lagi dalam <xliff:g id="NUMBER_1">%d</xliff:g> detik."</string>
<string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"Anda telah <xliff:g id="NUMBER_0">%d</xliff:g> kali salah menggambar pola pembuka kunci. Setelah <xliff:g id="NUMBER_1">%d</xliff:g> lagi upaya gagal, Anda akan diminta membuka kunci tablet menggunakan info masuk Google."\n\n"Coba lagi dalam <xliff:g id="NUMBER_2">%d</xliff:g> detik."</string>
<string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"Anda telah <xliff:g id="NUMBER_0">%d</xliff:g> kali salah menggambar pola pembuka kunci. Setelah <xliff:g id="NUMBER_1">%d</xliff:g> lagi upaya gagal, Anda akan diminta membuka kunci ponsel menggunakan info masuk Google."\n\n"Coba lagi dalam <xliff:g id="NUMBER_2">%d</xliff:g> detik."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"Anda telah gagal mencoba membuka gembok tablet sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. Setelah <xliff:g id="NUMBER_1">%d</xliff:g> upaya gagal lagi, tablet akan disetel ulang ke setelan bawaan pabrik dan semua data pengguna hilang."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"Anda telah gagal mencoba membuka gembok ponsel sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. Setelah <xliff:g id="NUMBER_1">%d</xliff:g> upaya gagal lagi, ponsel akan disetel ulang ke setelan bawaan pabrik dan semua data pengguna hilang."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"Anda telah gagal mencoba membuka gembok tablet sebanyak <xliff:g id="NUMBER">%d</xliff:g> kali. Kini tablet akan disetel ulang ke setelan bawaan pabrik."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"Anda telah gagal mencoba membuka gembok ponsel sebanyak <xliff:g id="NUMBER">%d</xliff:g> kali. Kini ponsel akan disetel ulang ke setelan bawaan pabrik."</string>
+ <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"Anda telah gagal mencoba membuka gembok tablet sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. Setelah <xliff:g id="NUMBER_1">%d</xliff:g> upaya gagal lagi, tablet akan disetel ulang ke setelan default pabrik dan semua data pengguna hilang."</string>
+ <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"Anda telah gagal mencoba membuka gembok ponsel sebanyak <xliff:g id="NUMBER_0">%d</xliff:g> kali. Setelah <xliff:g id="NUMBER_1">%d</xliff:g> upaya gagal lagi, ponsel akan disetel ulang ke setelan default pabrik dan semua data pengguna hilang."</string>
+ <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"Anda telah gagal mencoba membuka gembok tablet sebanyak <xliff:g id="NUMBER">%d</xliff:g> kali. Kini tablet akan disetel ulang ke setelan default pabrik."</string>
+ <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"Anda telah gagal mencoba membuka gembok ponsel sebanyak <xliff:g id="NUMBER">%d</xliff:g> kali. Kini ponsel akan disetel ulang ke setelan default pabrik."</string>
<string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"Coba lagi dalam <xliff:g id="NUMBER">%d</xliff:g> detik."</string>
<string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"Lupa pola?"</string>
<string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"Pembuka kunci akun"</string>
@@ -909,8 +917,8 @@
<string name="capital_on" msgid="1544682755514494298">"HIDUP"</string>
<string name="capital_off" msgid="6815870386972805832">"MATI"</string>
<string name="whichApplication" msgid="4533185947064773386">"Tindakan lengkap menggunakan"</string>
- <string name="alwaysUse" msgid="4583018368000610438">"Gunakan secara bawaan untuk tindakan ini."</string>
- <string name="clearDefaultHintMsg" msgid="3252584689512077257">"Menghapus bawaan di Setelan sistem &gt; Apl &gt; Terunduh."</string>
+ <string name="alwaysUse" msgid="4583018368000610438">"Gunakan secara default untuk tindakan ini."</string>
+ <string name="clearDefaultHintMsg" msgid="3252584689512077257">"Menghapus default di Setelan sistem &gt; Apl &gt; Terunduh."</string>
<string name="chooseActivity" msgid="7486876147751803333">"Pilih tindakan"</string>
<string name="chooseUsbActivity" msgid="6894748416073583509">"Pilih apl untuk perangkat USB"</string>
<string name="noApplications" msgid="2991814273936504689">"Tidak ada apl yang dapat melakukan tindakan ini."</string>
@@ -961,8 +969,8 @@
<string name="volume_icon_description_incall" msgid="8890073218154543397">"Volume panggilan"</string>
<string name="volume_icon_description_media" msgid="4217311719665194215">"Volume media"</string>
<string name="volume_icon_description_notification" msgid="7044986546477282274">"Volume pemberitahuan"</string>
- <string name="ringtone_default" msgid="3789758980357696936">"Nada dering bawaan"</string>
- <string name="ringtone_default_with_actual" msgid="8129563480895990372">"Nada dering bawaan (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
+ <string name="ringtone_default" msgid="3789758980357696936">"Nada dering default"</string>
+ <string name="ringtone_default_with_actual" msgid="8129563480895990372">"Nada dering default (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
<string name="ringtone_silent" msgid="4440324407807468713">"Senyap"</string>
<string name="ringtone_picker_title" msgid="3515143939175119094">"Nada dering"</string>
<string name="ringtone_unknown" msgid="5477919988701784788">"Nada dering tidak dikenal"</string>
@@ -1007,7 +1015,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Setel waktu"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Setel tanggal"</string>
<string name="date_time_set" msgid="5777075614321087758">"Setel"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Bawaan"</string>
+ <string name="default_permission_group" msgid="2690160991405646128">"Default"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"BARU: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Tidak perlu izin"</string>
<string name="perms_hide" msgid="7283915391320676226"><b>"Sembunyikan"</b></string>
@@ -1076,7 +1084,7 @@
<string name="permlab_pkgUsageStats" msgid="8787352074326748892">"perbarui statistik penggunaan komponen"</string>
<string name="permdesc_pkgUsageStats" msgid="1106612424254277630">"Mengizinkan apl memodifikasi statistik penggunaan komponen yang dikumpulkan. Tidak untuk digunakan oleh apl normal."</string>
<string name="permlab_copyProtectedData" msgid="4341036311211406692">"menyalin konten"</string>
- <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Mengizinkan apl menjalankan layanan kontainer bawaan untuk menyalin konten. Tidak untuk digunakan oleh apl normal."</string>
+ <string name="permdesc_copyProtectedData" msgid="4390697124288317831">"Mengizinkan apl menjalankan layanan kontainer default untuk menyalin konten. Tidak untuk digunakan oleh apl normal."</string>
<string name="tutorial_double_tap_to_zoom_message_short" msgid="4070433208160063538">"Sentuh dua kali untuk mengontrol perbesar/perkecil"</string>
<string name="gadget_host_error_inflating" msgid="4882004314906466162">"Tidak dapat menambahkan gawit."</string>
<string name="ime_action_go" msgid="8320845651737369027">"Buka"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 96c6709..2d1a413 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Consente all\'applicazione di leggere parole, frasi e nomi privati che l\'utente potrebbe aver memorizzato nel dizionario utente."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"scrittura nel dizionario definito dall\'utente"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Consente all\'applicazione di scrivere nuove parole nel dizionario utente."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"modifica/eliminaz. contenuti archivio USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modificare/eliminare i contenuti della scheda SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Consente all\'applicazione di scrivere nell\'archivio USB."</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 485e0b0..e49b724 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"מ×פשר ×œ×™×™×©×•× ×œ×§×¨×•× ×ž×™×œ×™×, שמות ×•×‘×™×˜×•×™×™× ×¤×¨×˜×™×™× ×©×”×ž×©×ª×ž×© ×חסן במילון המשתמש."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"כתיבה למילון בהגדרת המשתמש"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"מ×פשר ×œ×™×™×©×•× ×œ×›×ª×•×‘ ×ž×™×œ×™× ×—×“×©×•×ª במילון המשתמש."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"שנה/מחק תוכן ב×מצעי ×חסון מסוג USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"שנה/מחק תוכן של כרטיס SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"מ×פשר ×œ×™×™×©×•× ×œ×›×ª×•×‘ להתקן ×”×חסון מסוג USB."</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index bc9840d..5512eaf 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"ユーザーãŒå˜èªžãƒªã‚¹ãƒˆã«å€‹äººæƒ…å ±ã¨ã—ã¦ç™»éŒ²ã—ãŸå¯èƒ½æ€§ã®ã‚る語å¥ã‚„åå‰ã‚’読ã¿è¾¼ã‚€ã“ã¨ã‚’アプリã«è¨±å¯ã—ã¾ã™ã€‚"</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"å˜èªžãƒªã‚¹ãƒˆã¸ã®æ›¸ãè¾¼ã¿"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"å˜èªžãƒªã‚¹ãƒˆã«æ–°ã—ã„語å¥ã‚’書ã込むã“ã¨ã‚’アプリã«è¨±å¯ã—ã¾ã™ã€‚"</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"USBストレージã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®å¤‰æ›´/削除"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"SDカードã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を修正/削除ã™ã‚‹"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"USBストレージã¸ã®æ›¸ãè¾¼ã¿ã‚’アプリã«è¨±å¯ã—ã¾ã™ã€‚"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index c9801a3..29a7211 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"ì•±ì´ ì‚¬ìš©ìž ì‚¬ì „ì— ë³´ê´€ë˜ì–´ 있는 비공개 단어, ì´ë¦„ ë° êµ¬ë¬¸ì„ ì½ë„ë¡ í—ˆìš©í•©ë‹ˆë‹¤."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"ì‚¬ìš©ìž ì •ì˜ ì‚¬ì „ì— ìž‘ì„±"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"ì•±ì´ ì‚¬ìš©ìž ì‚¬ì „ì— ìƒˆ 단어를 입력할 수 있ë„ë¡ í—ˆìš©í•©ë‹ˆë‹¤."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"USB 저장소 콘í…츠 수정/ì‚­ì œ"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"SD ì¹´ë“œ 콘í…츠 수정/ì‚­ì œ"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"ì•±ì´ USB ì €ìž¥ì†Œì— ì“¸ 수 있ë„ë¡ í—ˆìš©í•©ë‹ˆë‹¤."</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 4424ad5..da747b6 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Leidžiama programai skaityti privaÄius žodžius, vardus ir frazes, kuriuos naudotojas iÅ¡saugojo naudotojo žodyne."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"rašyti naudotojo nustatytame žodyne"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Leidžiama programai rašyti naujus žodžius į naudotojo žodyną."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"keisti / ištrinti USB atmintinės turinį"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"keisti / ištrinti SD kortelės turinį"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Leidž. progr. raš. į USB atm."</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 89baaaa..c96df5e 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Ä»auj lietotnei lasÄ«t jebkurus privÄtu vÄrdus, nosaukumus un frÄzes, ko lietotÄjs saglabÄjis savÄ lietotÄja vÄrdnÄ«cÄ."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"rakstÄ«t lietotÄja noteiktÄ vÄrdnÄ«cÄ"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Ä»auj lietotnei rakstÄ«t jaunus vÄrdus lietotÄja vÄrdnÄ«cÄ."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"pÄrveidot/dzÄ“st USB kr. sat."</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"pÄrveidot/dzÄ“st SD kartes saturu"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Ä»auj lietotnei rakstÄ«t USB atmiņÄ."</string>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 385bebb..f97f481 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Membenarkan apl membaca sebarang kata-kata peribadi, nama dan frasa yang mungkin telah disimpan oleh pengguna dalam kamus pengguna."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"tulis ke kamus yang ditakrifkan pengguna"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Membenarkan apl menulis perkataan baharu ke dalam kamus pengguna."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"ubah suai/padam kdgn storn USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"ubah suai/padamkan kandungan kad SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Membenarkan apl menulis ke storan USB."</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index e70a664..9e3e480 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Lar appen lese eventuelle private ord, navn og uttrykk som brukeren kan ha lagret i brukerordlisten."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"skrive i brukerdefinert ordliste"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Lar appen skrive nye ord i brukerordlisten."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"endre/slette innh. i USB-lagr."</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"redigere/slette innhold på minnekort"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Gir appen tillatelse til å skrive til USB-lagringen."</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 6876c63..8946bbb 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Hiermee kan de app privéwoorden, namen en woordcombinaties lezen die de gebruiker heeft opgeslagen in het gebruikerswoordenboek."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"schrijven naar door gebruiker gedefinieerd woordenboek"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Hiermee kan de app nieuwe woorden schrijven naar het gebruikerswoordenboek."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"inhoud van USB-opslag aanpassen/verwijderen"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"inhoud op de SD-kaart aanpassen/verwijderen"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Hiermee kan de app schrijven naar de USB-opslag."</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 96dcfa0..a1bfa7c 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Pozwala aplikacji na odczytywanie wszelkich prywatnych słów, nazw i wyrażeń zapisanych w słowniku użytkownika."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"zapisywanie w słowniku zdefiniowanym przez użytkownika"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Pozwala aplikacji na zapisywanie nowych słów do słownika użytkownika."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"Modyfikowanie/usuwanie z nośnika USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modyfikowanie/usuwanie zawartości karty SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Pozwala aplikacji na zapis w pamięci USB."</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 7f031fd..e5b2628 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Permite à aplicação ler quaisquer palavras, nomes e expressões privadas que o utilizador possa ter armazenado no dicionário do utilizador."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"escrever no dicionário definido pelo utilizador"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permite à aplicação escrever novas palavras no dicionário do utilizador."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"mod./elim. conteúdo do armaz. USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modificar/eliminar conteúdo do cartão SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permite que a aplicação escreva na unidade de armazenamento USB."</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index fbfe88f..c9794c1 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Permite que o aplicativo leia palavras, nomes e frases particulares armazenados pelo usuário no dicionário do usuário."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"gravar no dicionário definido pelo usuário"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permite que o aplicativo grave novas palavras no dicionário do usuário."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"modificar/excluir cont. USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modificar/excluir conteúdo do cartão SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permite gravar no armaz. USB."</string>
diff --git a/core/res/res/values-rm/strings.xml b/core/res/res/values-rm/strings.xml
index ff76f74..c58a0a3 100644
--- a/core/res/res/values-rm/strings.xml
+++ b/core/res/res/values-rm/strings.xml
@@ -764,6 +764,14 @@
<skip />
<!-- no translation found for permdesc_writeDictionary (8185385716255065291) -->
<skip />
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<!-- no translation found for permlab_sdcardWrite (85430876310764752) -->
<skip />
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modifitgar/stizzar cuntegns da la carta SD"</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index cac586e..3f3658c 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Permite aplicaţiei să citească cuvinte, nume şi expresii private stocate de utilizator în dicţionarul său."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"scriere în dicţionarul definit de utilizator"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permite aplicaţiei să scrie cuvinte noi în dicţionarul utilizatorului."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"modificare/ştergere a conţinutului stocării USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modificare/ştergere conţinut card SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permite scriere în stoc. USB."</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 3a554d6..458d107 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Приложение получит доÑтуп ко вÑем Ñловам, именам и фразам, которые хранÑÑ‚ÑÑ Ð² пользовательÑком Ñловаре."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"запиÑÑŒ данных в пользовательÑкий Ñловарь"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Приложение Ñможет добавлÑÑ‚ÑŒ Ñлова в пользовательÑкий Ñловарь."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"доÑтуп к USB-накопителю"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"изменÑÑ‚ÑŒ/удалÑÑ‚ÑŒ Ñодержимое SD-карты"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Приложение Ñможет запиÑывать данные на USB-накопитель."</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index daa321d..3c90000 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Umožňuje aplikácii ÄítaÅ¥ súkromné slová, názvy a frázy, ktoré mohol používateľ uložiÅ¥ do slovníka používateľa."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"zapisovať do slovníka definovaného používateľom"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Umožňuje aplikácii zapisovať nové slová do používateľského slovníka."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"upraviť/odstrániť obsah ukl. pr. USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"Zmeniť/odstrániť obsah karty SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Umožňuje aplikácii zápis do ukladacieho priestoru USB."</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 20ad59b..4345741 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Programu omogoÄa branje morebitnih zasebnih besed, imen in izrazov, ki jih je uporabnik shranil v uporabniÅ¡ki slovar."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"pisanje v uporabniÅ¡ko doloÄen slovar"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Programu omogoÄa pisanje nove besede v uporabniÅ¡ki slovar."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"spreminjanje vsebine pomnilnika USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"spreminjanje/brisanje vsebine kartice SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Programu omogoÄa zapisovanje v pomnilnik USB."</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 9fb8abf..e216e57 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Дозвољава апликацији да чита Ñве приватне речи, називе и фразе које је кориÑник Ñачувао у кориÑничком речнику."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"упиÑивање у речник који је дефиниÑао кориÑник"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Дозвољава апликацији да упиÑује нове речи у кориÑнички речник."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"измена/бриÑање Ñадржаја USB меморије"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"измена/бриÑање Ñадржаја SD картице"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Дозвољава апликацији да упиÑује податке на USB меморију."</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 2c4189b..fbca3e4 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Tillåter att appen läser alla privata ord, namn och fraser som användaren har sparat i ordlistan."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"lägga till i användardefinierad ordlista"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Tillåter att appen anger nya ord i användarordlistan."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"ändra/ta bort från USB-enhet"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"ändra/ta bort innehåll på SD-kortet"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Gör att app skriver till USB."</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 13053ab..03b40d8 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Inaruhusu programu kusoma maneno, majina na vifungu vyovyote vya kibinafsi, ambavyo huenda mtumiaji amehifadhi katika kamusi ya mtumiaji."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"andika kwa kamusi iliyobainishwa na mtumiaji"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Inaruhusu programu kuandika maneno mapya katika kamusi ya mtumiaji."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"rekebisha/futa maudhui ya hifadhi ya USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"rekebisha/futa maudhui ya kadi ya SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Inaruhusu programu kuandikia hifadhi ya USB."</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index a9a196c..bcd9fe6 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹à¸­à¸›à¸žà¸¥à¸´à¹€à¸„ชันอ่านคำ ชื่อ à¹à¸¥à¸°à¸§à¸¥à¸µà¸ªà¹ˆà¸§à¸™à¸šà¸¸à¸„คลที่ผู้ใช้อาจเà¸à¹‡à¸šà¹„ว้ในพจนานุà¸à¸£à¸¡à¸‚องผู้ใช้"</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"เขียนลงในพจนานุà¸à¸£à¸¡à¸—ี่ผู้ใช้à¸à¸³à¸«à¸™à¸”"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹à¸­à¸›à¸žà¸¥à¸´à¹€à¸„ชันเขียนคำใหม่ลงในพจนานุà¸à¸£à¸¡à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰"</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"à¹à¸à¹‰à¹„ข/ลบเนื้อหาของที่เà¸à¹‡à¸šà¸‚้อมูล USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"à¹à¸à¹‰à¹„ข/ลบข้อมูลà¸à¸²à¸£à¹Œà¸” SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹à¸­à¸›à¸¯ เขียนลงใน USB"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 2672083..9e37534 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Pinapayagan ang app na magbasa ng anumang pribadong mga salita, pangalan at parirala na maaaring inimbak ng user sa diksyunaryo ng user."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"magsulat sa diksyunaryong tinukoy ng user"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Pinapayagan ang app na magsulat ng mga bagong salita sa diksyunaryo ng user."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"baguhin/tanggalin laman ng USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"baguhin/tanggalin ang mga nilalaman ng SD card"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Pinapayagan ang app na magsulat sa USB storage."</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 059ccea..2462e90 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Uygulamaya, kullanıcının kullanıcı sözlüğünde depolamış olabileceği kişisel kelimeleri, adları ve kelime öbeklerini okuma izni verir."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"kullanıcı tanımlı sözlüğe yaz"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Uygulamaya, kullanıcı sözlüğüne yeni kelimeler yazma izni verir."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"USB dep birm içeriğini dğş/sil"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"SD kart içeriklerini değiştir/sil"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Uygulamaya USB depolama birimine yazma izni verir."</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 42929ec..a4f8e62 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"ДозволÑÑ” програмі читати будь-Ñкі оÑобиÑÑ‚Ñ– виÑлови, назви та фрази, Ñкі кориÑтувач міг зберегти у Ñвоєму Ñловнику."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"пиÑати у вказаний кориÑтувачем Ñловник"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"ДозволÑÑ” програмі пиÑати нові Ñлова в Ñловник кориÑтувача."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"змінювати/видалÑти вміÑÑ‚ ноÑÑ–Ñ USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"змінювати/видал. вміÑÑ‚ карти SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"ДозволÑÑ” програмі пиÑати на ноÑій USB"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 64469ab..13bdfa5 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Cho phép ứng dụng Ä‘á»c bất kỳ từ, tên và cụm từ riêng nào mà ngÆ°á»i dùng có thể đã lÆ°u trữ trong từ Ä‘iển của ngÆ°á»i dùng."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"ghi vào từ Ä‘iển do ngÆ°á»i dùng xác định"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Cho phép ứng dụng ghi từ má»›i vào từ Ä‘iển của ngÆ°á»i dùng."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"sửa đổi/xóa nội dung bộ nhớ USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"sửa đổi/xóa nội dung thẻ SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Cho phép ứng dụng ghi vào bộ lưu trữ USB."</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 2664ad3..d848dd2 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"å…许应用程åºè¯»å–用户å¯èƒ½åœ¨ç”¨æˆ·è¯å…¸ä¸­å·²å­˜å‚¨çš„ä»»æ„ç§æœ‰å­—è¯ã€å称和短语。"</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"写入用户定义的è¯å…¸"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"å…许应用程åºå‘用户è¯å…¸ä¸­å†™å…¥æ–°è¯ã€‚"</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"修改/删除 USB 存储设备内容"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"修改/删除 SD å¡ä¸­çš„内容"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"å…许应用程åºå†™å…¥ USB 存储设备。"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 7c8617e..ae16b6b 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"å…許應用程å¼è®€å–使用者儲存在使用者字典內的任何ç§äººå­—è©žã€å稱和詞組。"</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"寫入使用者定義的字典"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"å…許應用程å¼å°‡æ–°å­—詞寫入使用者的字典。"</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"修改/刪除 USB 儲存è£ç½®å…§å®¹"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"修改/刪除 SD å¡çš„內容"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"å…許應用程å¼å¯«å…¥ USB 儲存è£ç½®ã€‚"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 09777ab..9301648 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -499,6 +499,14 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Ivumela uhlelo lokusebenza ukufunda noma yimaphi amagama ayimfihlo, amagama nemisho leyo umsebenzisi ayigcine kwisichazamazwi somsebenzisi."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"bhala kwisichazamazwi esicacisiwe somsebenzisi"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Ivumela insiza ukuthi ibhale amagama amasha esichazinimazwi."</string>
+ <!-- no translation found for permlab_sdcardRead (4086221374639183281) -->
+ <skip />
+ <!-- no translation found for permlab_sdcardRead (8537875151845139539) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (1055302898999352339) -->
+ <skip />
+ <!-- no translation found for permdesc_sdcardRead (7947792373570683542) -->
+ <skip />
<string name="permlab_sdcardWrite" product="nosdcard" msgid="85430876310764752">"guqula/susa okuqukethwe isitoreji se-USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"guqula/susa okuqukethwe kwekhadi le-SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Ivumela insiza ukuthi ibhalele ekulondolozweni kwe-USB."</string>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 7137b7c..7799f74 100755
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -942,6 +942,26 @@
contact (address) data stored on your phone. Malicious
apps may use this to erase or modify your contact data.</string>
+
+ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permlab_readCallLog">read call log</string>
+ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permdesc_readCallLog" product="tablet">Allows the app to read your tablet\'s call log, including data about incoming and outgoing calls.
+ Malicious apps may use this to send your data to other people.</string>
+ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permdesc_readCallLog" product="default">Allows the app to read your phone\'s call log, including data about incoming and outgoing calls.
+ Malicious apps may use this to send your data to other people.</string>
+
+ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permlab_writeCallLog">write call log</string>
+ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permdesc_writeCallLog" product="tablet">Allows the app to modify your tablet\'s call log, including data about incoming and outgoing calls.
+ Malicious apps may use this to erase or modify your call log.</string>
+ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permdesc_writeCallLog" product="default">Allows the app to modify your phone\'s call log, including data about incoming and outgoing calls.
+ Malicious apps may use this to erase or modify your call log.</string>
+
+
<!-- Title of the read profile permission, listed so the user can decide whether to allow the application to read the user's personal profile data. [CHAR LIMIT=30] -->
<string name="permlab_readProfile">read your profile data</string>
<!-- Description of the read profile permission, listed so the user can decide whether to allow the application to read the user's personal profile data. [CHAR LIMIT=NONE] -->
diff --git a/core/tests/coretests/src/android/util/LocaleUtilTest.java b/core/tests/coretests/src/android/util/LocaleUtilTest.java
deleted file mode 100644
index 0ca6043..0000000
--- a/core/tests/coretests/src/android/util/LocaleUtilTest.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright (C) 2007 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.
- */
-
-package android.util;
-
-import java.util.Locale;
-
-import android.test.AndroidTestCase;
-import dalvik.annotation.TestLevel;
-import dalvik.annotation.TestTargetNew;
-
-import static android.view.View.LAYOUT_DIRECTION_LTR;
-import static android.view.View.LAYOUT_DIRECTION_RTL;
-
-public class LocaleUtilTest extends AndroidTestCase {
-
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- method = "getLayoutDirectionFromLocale",
- args = {Locale.class}
- )
- public void testGetLayoutDirectionFromLocale() {
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(null));
-
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.ENGLISH));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.CANADA));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.CANADA_FRENCH));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.FRANCE));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.FRENCH));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.GERMAN));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.GERMANY));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.ITALIAN));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.ITALY));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.UK));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.US));
-
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.ROOT));
-
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.CHINA));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.CHINESE));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.JAPAN));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.JAPANESE));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.KOREA));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.KOREAN));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.PRC));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.SIMPLIFIED_CHINESE));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.TAIWAN));
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(Locale.TRADITIONAL_CHINESE));
-
- Locale locale = new Locale("ar");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "AE");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "BH");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "DZ");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "EG");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "IQ");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "JO");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "KW");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "LB");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "LY");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "MA");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "OM");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "QA");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "SA");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "SD");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "SY");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "TN");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ar", "YE");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
-
- locale = new Locale("fa");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("fa", "AF");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("fa", "IR");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
-
- locale = new Locale("iw");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("iw", "IL");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("he");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("he", "IL");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
-
- locale = new Locale("pa_Arab");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("pa_Arab", "PK");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
-
- locale = new Locale("ps");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ps", "AF");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
-
- locale = new Locale("ur");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ur", "IN");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("ur", "PK");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
-
- locale = new Locale("uz_Arab");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- locale = new Locale("uz_Arab", "AF");
- assertEquals(LAYOUT_DIRECTION_RTL,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
-
- // Locale without a real language
- locale = new Locale("zz");
- assertEquals(LAYOUT_DIRECTION_LTR,
- LocaleUtil.getLayoutDirectionFromLocale(locale));
- }
-}
diff --git a/drm/libdrmframework/plugins/passthru/src/DrmPassthruPlugIn.cpp b/drm/libdrmframework/plugins/passthru/src/DrmPassthruPlugIn.cpp
index 0ffc0a7..a3eac3e 100644
--- a/drm/libdrmframework/plugins/passthru/src/DrmPassthruPlugIn.cpp
+++ b/drm/libdrmframework/plugins/passthru/src/DrmPassthruPlugIn.cpp
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-#define LOG_NDEBUG 0
+//#define LOG_NDEBUG 0
#define LOG_TAG "DrmPassthruPlugIn"
#include <utils/Log.h>
@@ -58,7 +58,7 @@ DrmMetadata* DrmPassthruPlugIn::onGetMetadata(int uniqueId, const String8* path)
DrmConstraints* DrmPassthruPlugIn::onGetConstraints(
int uniqueId, const String8* path, int action) {
- ALOGD("DrmPassthruPlugIn::onGetConstraints From Path: %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onGetConstraints From Path: %d", uniqueId);
DrmConstraints* drmConstraints = new DrmConstraints();
String8 value("dummy_available_time");
@@ -73,7 +73,7 @@ DrmConstraints* DrmPassthruPlugIn::onGetConstraints(
}
DrmInfoStatus* DrmPassthruPlugIn::onProcessDrmInfo(int uniqueId, const DrmInfo* drmInfo) {
- ALOGD("DrmPassthruPlugIn::onProcessDrmInfo - Enter : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onProcessDrmInfo - Enter : %d", uniqueId);
DrmInfoStatus* drmInfoStatus = NULL;
if (NULL != drmInfo) {
switch (drmInfo->getInfoType()) {
@@ -102,28 +102,28 @@ DrmInfoStatus* DrmPassthruPlugIn::onProcessDrmInfo(int uniqueId, const DrmInfo*
}
}
}
- ALOGD("DrmPassthruPlugIn::onProcessDrmInfo - Exit");
+ ALOGV("DrmPassthruPlugIn::onProcessDrmInfo - Exit");
return drmInfoStatus;
}
status_t DrmPassthruPlugIn::onSetOnInfoListener(
int uniqueId, const IDrmEngine::OnInfoListener* infoListener) {
- ALOGD("DrmPassthruPlugIn::onSetOnInfoListener : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onSetOnInfoListener : %d", uniqueId);
return DRM_NO_ERROR;
}
status_t DrmPassthruPlugIn::onInitialize(int uniqueId) {
- ALOGD("DrmPassthruPlugIn::onInitialize : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onInitialize : %d", uniqueId);
return DRM_NO_ERROR;
}
status_t DrmPassthruPlugIn::onTerminate(int uniqueId) {
- ALOGD("DrmPassthruPlugIn::onTerminate : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onTerminate : %d", uniqueId);
return DRM_NO_ERROR;
}
DrmSupportInfo* DrmPassthruPlugIn::onGetSupportInfo(int uniqueId) {
- ALOGD("DrmPassthruPlugIn::onGetSupportInfo : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onGetSupportInfo : %d", uniqueId);
DrmSupportInfo* drmSupportInfo = new DrmSupportInfo();
// Add mimetype's
drmSupportInfo->addMimeType(String8("application/vnd.passthru.drm"));
@@ -136,12 +136,12 @@ DrmSupportInfo* DrmPassthruPlugIn::onGetSupportInfo(int uniqueId) {
status_t DrmPassthruPlugIn::onSaveRights(int uniqueId, const DrmRights& drmRights,
const String8& rightsPath, const String8& contentPath) {
- ALOGD("DrmPassthruPlugIn::onSaveRights : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onSaveRights : %d", uniqueId);
return DRM_NO_ERROR;
}
DrmInfo* DrmPassthruPlugIn::onAcquireDrmInfo(int uniqueId, const DrmInfoRequest* drmInfoRequest) {
- ALOGD("DrmPassthruPlugIn::onAcquireDrmInfo : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onAcquireDrmInfo : %d", uniqueId);
DrmInfo* drmInfo = NULL;
if (NULL != drmInfoRequest) {
@@ -157,65 +157,65 @@ DrmInfo* DrmPassthruPlugIn::onAcquireDrmInfo(int uniqueId, const DrmInfoRequest*
}
bool DrmPassthruPlugIn::onCanHandle(int uniqueId, const String8& path) {
- ALOGD("DrmPassthruPlugIn::canHandle: %s ", path.string());
+ ALOGV("DrmPassthruPlugIn::canHandle: %s ", path.string());
String8 extension = path.getPathExtension();
extension.toLower();
return (String8(".passthru") == extension);
}
String8 DrmPassthruPlugIn::onGetOriginalMimeType(int uniqueId, const String8& path) {
- ALOGD("DrmPassthruPlugIn::onGetOriginalMimeType() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onGetOriginalMimeType() : %d", uniqueId);
return String8("video/passthru");
}
int DrmPassthruPlugIn::onGetDrmObjectType(
int uniqueId, const String8& path, const String8& mimeType) {
- ALOGD("DrmPassthruPlugIn::onGetDrmObjectType() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onGetDrmObjectType() : %d", uniqueId);
return DrmObjectType::UNKNOWN;
}
int DrmPassthruPlugIn::onCheckRightsStatus(int uniqueId, const String8& path, int action) {
- ALOGD("DrmPassthruPlugIn::onCheckRightsStatus() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onCheckRightsStatus() : %d", uniqueId);
int rightsStatus = RightsStatus::RIGHTS_VALID;
return rightsStatus;
}
status_t DrmPassthruPlugIn::onConsumeRights(int uniqueId, DecryptHandle* decryptHandle,
int action, bool reserve) {
- ALOGD("DrmPassthruPlugIn::onConsumeRights() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onConsumeRights() : %d", uniqueId);
return DRM_NO_ERROR;
}
status_t DrmPassthruPlugIn::onSetPlaybackStatus(int uniqueId, DecryptHandle* decryptHandle,
int playbackStatus, int64_t position) {
- ALOGD("DrmPassthruPlugIn::onSetPlaybackStatus() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onSetPlaybackStatus() : %d", uniqueId);
return DRM_NO_ERROR;
}
bool DrmPassthruPlugIn::onValidateAction(int uniqueId, const String8& path,
int action, const ActionDescription& description) {
- ALOGD("DrmPassthruPlugIn::onValidateAction() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onValidateAction() : %d", uniqueId);
return true;
}
status_t DrmPassthruPlugIn::onRemoveRights(int uniqueId, const String8& path) {
- ALOGD("DrmPassthruPlugIn::onRemoveRights() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onRemoveRights() : %d", uniqueId);
return DRM_NO_ERROR;
}
status_t DrmPassthruPlugIn::onRemoveAllRights(int uniqueId) {
- ALOGD("DrmPassthruPlugIn::onRemoveAllRights() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onRemoveAllRights() : %d", uniqueId);
return DRM_NO_ERROR;
}
status_t DrmPassthruPlugIn::onOpenConvertSession(int uniqueId, int convertId) {
- ALOGD("DrmPassthruPlugIn::onOpenConvertSession() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onOpenConvertSession() : %d", uniqueId);
return DRM_NO_ERROR;
}
DrmConvertedStatus* DrmPassthruPlugIn::onConvertData(
int uniqueId, int convertId, const DrmBuffer* inputData) {
- ALOGD("DrmPassthruPlugIn::onConvertData() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onConvertData() : %d", uniqueId);
DrmBuffer* convertedData = NULL;
if (NULL != inputData && 0 < inputData->length) {
@@ -229,13 +229,13 @@ DrmConvertedStatus* DrmPassthruPlugIn::onConvertData(
}
DrmConvertedStatus* DrmPassthruPlugIn::onCloseConvertSession(int uniqueId, int convertId) {
- ALOGD("DrmPassthruPlugIn::onCloseConvertSession() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onCloseConvertSession() : %d", uniqueId);
return new DrmConvertedStatus(DrmConvertedStatus::STATUS_OK, NULL, 0 /*offset*/);
}
status_t DrmPassthruPlugIn::onOpenDecryptSession(
int uniqueId, DecryptHandle* decryptHandle, int fd, off64_t offset, off64_t length) {
- ALOGD("DrmPassthruPlugIn::onOpenDecryptSession() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onOpenDecryptSession() : %d", uniqueId);
#ifdef ENABLE_PASSTHRU_DECRYPTION
decryptHandle->mimeType = String8("video/passthru");
@@ -254,7 +254,7 @@ status_t DrmPassthruPlugIn::onOpenDecryptSession(
}
status_t DrmPassthruPlugIn::onCloseDecryptSession(int uniqueId, DecryptHandle* decryptHandle) {
- ALOGD("DrmPassthruPlugIn::onCloseDecryptSession() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onCloseDecryptSession() : %d", uniqueId);
if (NULL != decryptHandle) {
if (NULL != decryptHandle->decryptInfo) {
delete decryptHandle->decryptInfo; decryptHandle->decryptInfo = NULL;
@@ -266,34 +266,40 @@ status_t DrmPassthruPlugIn::onCloseDecryptSession(int uniqueId, DecryptHandle* d
status_t DrmPassthruPlugIn::onInitializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle,
int decryptUnitId, const DrmBuffer* headerInfo) {
- ALOGD("DrmPassthruPlugIn::onInitializeDecryptUnit() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onInitializeDecryptUnit() : %d", uniqueId);
return DRM_NO_ERROR;
}
status_t DrmPassthruPlugIn::onDecrypt(int uniqueId, DecryptHandle* decryptHandle,
int decryptUnitId, const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV) {
- ALOGD("DrmPassthruPlugIn::onDecrypt() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onDecrypt() : %d", uniqueId);
/**
* As a workaround implementation passthru would copy the given
* encrypted buffer as it is to decrypted buffer. Note, decBuffer
* memory has to be allocated by the caller.
*/
if (NULL != (*decBuffer) && 0 < (*decBuffer)->length) {
- memcpy((*decBuffer)->data, encBuffer->data, encBuffer->length);
- (*decBuffer)->length = encBuffer->length;
+ if ((*decBuffer)->length >= encBuffer->length) {
+ memcpy((*decBuffer)->data, encBuffer->data, encBuffer->length);
+ (*decBuffer)->length = encBuffer->length;
+ } else {
+ ALOGE("decBuffer size (%d) too small to hold %d bytes",
+ (*decBuffer)->length, encBuffer->length);
+ return DRM_ERROR_UNKNOWN;
+ }
}
return DRM_NO_ERROR;
}
status_t DrmPassthruPlugIn::onFinalizeDecryptUnit(
int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId) {
- ALOGD("DrmPassthruPlugIn::onFinalizeDecryptUnit() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onFinalizeDecryptUnit() : %d", uniqueId);
return DRM_NO_ERROR;
}
ssize_t DrmPassthruPlugIn::onPread(int uniqueId, DecryptHandle* decryptHandle,
void* buffer, ssize_t numBytes, off64_t offset) {
- ALOGD("DrmPassthruPlugIn::onPread() : %d", uniqueId);
+ ALOGV("DrmPassthruPlugIn::onPread() : %d", uniqueId);
return 0;
}
diff --git a/include/android_runtime/android_app_NativeActivity.h b/include/android_runtime/android_app_NativeActivity.h
index a59677a..7977c23 100644
--- a/include/android_runtime/android_app_NativeActivity.h
+++ b/include/android_runtime/android_app_NativeActivity.h
@@ -65,7 +65,7 @@ extern void android_NativeActivity_hideSoftInput(
* b. Java sends event through default key handler.
* c. event is finished.
*/
-struct AInputQueue : public android::InputEventFactoryInterface {
+struct AInputQueue {
public:
/* Creates a consumer associated with an input channel. */
explicit AInputQueue(const android::sp<android::InputChannel>& channel, int workWrite);
@@ -96,16 +96,16 @@ public:
android::KeyEvent* consumeUnhandledEvent();
android::KeyEvent* consumePreDispatchingEvent(int* outSeq);
- virtual android::KeyEvent* createKeyEvent();
- virtual android::MotionEvent* createMotionEvent();
+ android::KeyEvent* createKeyEvent();
int mWorkWrite;
private:
void doUnhandledKey(android::KeyEvent* keyEvent);
bool preDispatchKey(android::KeyEvent* keyEvent);
- void wakeupDispatch();
+ void wakeupDispatchLocked();
+ android::PooledInputEventFactory mPooledInputEventFactory;
android::InputConsumer mConsumer;
android::sp<android::Looper> mLooper;
@@ -127,11 +127,6 @@ private:
int mSeq;
- // Cache of previously allocated key events.
- android::Vector<android::KeyEvent*> mAvailKeyEvents;
- // Cache of previously allocated motion events.
- android::Vector<android::MotionEvent*> mAvailMotionEvents;
-
// All input events that are actively being processed.
android::Vector<in_flight_event> mInFlightEvents;
diff --git a/include/androidfw/Input.h b/include/androidfw/Input.h
index f5db6e2..a4ebd95 100644
--- a/include/androidfw/Input.h
+++ b/include/androidfw/Input.h
@@ -616,6 +616,26 @@ private:
};
/*
+ * An input event factory implementation that maintains a pool of input events.
+ */
+class PooledInputEventFactory : public InputEventFactoryInterface {
+public:
+ PooledInputEventFactory(size_t maxPoolSize = 20);
+ virtual ~PooledInputEventFactory();
+
+ virtual KeyEvent* createKeyEvent();
+ virtual MotionEvent* createMotionEvent();
+
+ void recycle(InputEvent* event);
+
+private:
+ const size_t mMaxPoolSize;
+
+ Vector<KeyEvent*> mKeyEventPool;
+ Vector<MotionEvent*> mMotionEventPool;
+};
+
+/*
* Calculates the velocity of pointer movements over time.
*/
class VelocityTracker {
diff --git a/include/androidfw/InputTransport.h b/include/androidfw/InputTransport.h
index a846e65..29c296e 100644
--- a/include/androidfw/InputTransport.h
+++ b/include/androidfw/InputTransport.h
@@ -292,7 +292,29 @@ public:
*/
status_t sendFinishedSignal(uint32_t seq, bool handled);
- /* Returns true if there is a pending batch. */
+ /* Returns true if there is a deferred event waiting.
+ *
+ * Should be called after calling consume() to determine whether the consumer
+ * has a deferred event to be processed. Deferred events are somewhat special in
+ * that they have already been removed from the input channel. If the input channel
+ * becomes empty, the client may need to do extra work to ensure that it processes
+ * the deferred event despite the fact that the inptu channel's file descriptor
+ * is not readable.
+ *
+ * One option is simply to call consume() in a loop until it returns WOULD_BLOCK.
+ * This guarantees that all deferred events will be processed.
+ *
+ * Alternately, the caller can call hasDeferredEvent() to determine whether there is
+ * a deferred event waiting and then ensure that its event loop wakes up at least
+ * one more time to consume the deferred event.
+ */
+ bool hasDeferredEvent() const;
+
+ /* Returns true if there is a pending batch.
+ *
+ * Should be called after calling consume() with consumeBatches == false to determine
+ * whether consume() should be called again later on with consumeBatches == true.
+ */
bool hasPendingBatch() const;
private:
diff --git a/include/media/IAudioRecord.h b/include/media/IAudioRecord.h
index 7869020..089be3b 100644
--- a/include/media/IAudioRecord.h
+++ b/include/media/IAudioRecord.h
@@ -32,7 +32,7 @@ namespace android {
class IAudioRecord : public IInterface
{
-public:
+public:
DECLARE_META_INTERFACE(AudioRecord);
/* After it's created the track is not active. Call start() to
@@ -42,13 +42,13 @@ public:
virtual status_t start(pid_t tid) = 0;
/* Stop a track. If set, the callback will cease being called and
- * obtainBuffer will return an error. Buffers that are already released
+ * obtainBuffer will return an error. Buffers that are already released
* will be processed, unless flush() is called.
*/
virtual void stop() = 0;
/* get this tracks control block */
- virtual sp<IMemory> getCblk() const = 0;
+ virtual sp<IMemory> getCblk() const = 0;
};
// ----------------------------------------------------------------------------
diff --git a/include/media/IAudioTrack.h b/include/media/IAudioTrack.h
index 77f3e21..577b095 100644
--- a/include/media/IAudioTrack.h
+++ b/include/media/IAudioTrack.h
@@ -32,7 +32,7 @@ namespace android {
class IAudioTrack : public IInterface
{
-public:
+public:
DECLARE_META_INTERFACE(AudioTrack);
/* Get this track's control block */
@@ -45,7 +45,7 @@ public:
virtual status_t start(pid_t tid) = 0;
/* Stop a track. If set, the callback will cease being called and
- * obtainBuffer will return an error. Buffers that are already released
+ * obtainBuffer will return an error. Buffers that are already released
* will continue to be processed, unless/until flush() is called.
*/
virtual void stop() = 0;
@@ -59,9 +59,9 @@ public:
* While muted, the callback, if set, is still called.
*/
virtual void mute(bool) = 0;
-
+
/* Pause a track. If set, the callback will cease being called and
- * obtainBuffer will return an error. Buffers that are already released
+ * obtainBuffer will return an error. Buffers that are already released
* will continue to be processed, unless/until flush() is called.
*/
virtual void pause() = 0;
diff --git a/include/media/IMediaMetadataRetriever.h b/include/media/IMediaMetadataRetriever.h
index 1c1c268..6dbb2d7 100644
--- a/include/media/IMediaMetadataRetriever.h
+++ b/include/media/IMediaMetadataRetriever.h
@@ -56,4 +56,3 @@ public:
}; // namespace android
#endif // ANDROID_IMEDIAMETADATARETRIEVER_H
-
diff --git a/include/media/IMediaPlayer.h b/include/media/IMediaPlayer.h
index 39d58ab..00facc5 100644
--- a/include/media/IMediaPlayer.h
+++ b/include/media/IMediaPlayer.h
@@ -64,6 +64,7 @@ public:
virtual status_t setParameter(int key, const Parcel& request) = 0;
virtual status_t getParameter(int key, Parcel* reply) = 0;
virtual status_t setRetransmitEndpoint(const struct sockaddr_in* endpoint) = 0;
+ virtual status_t setNextPlayer(const sp<IMediaPlayer>& next) = 0;
// Invoke a generic method on the player by using opaque parcels
// for the request and reply.
diff --git a/include/media/IMediaPlayerClient.h b/include/media/IMediaPlayerClient.h
index daec1c7..8f1843e 100644
--- a/include/media/IMediaPlayerClient.h
+++ b/include/media/IMediaPlayerClient.h
@@ -45,4 +45,3 @@ public:
}; // namespace android
#endif // ANDROID_IMEDIAPLAYERCLIENT_H
-
diff --git a/include/media/IMediaRecorderClient.h b/include/media/IMediaRecorderClient.h
index 0058ef2..e7d0229 100644
--- a/include/media/IMediaRecorderClient.h
+++ b/include/media/IMediaRecorderClient.h
@@ -45,4 +45,3 @@ public:
}; // namespace android
#endif // ANDROID_IMEDIARECORDERCLIENT_H
-
diff --git a/include/media/JetPlayer.h b/include/media/JetPlayer.h
index 491a950..9f6ff4c 100644
--- a/include/media/JetPlayer.h
+++ b/include/media/JetPlayer.h
@@ -40,13 +40,13 @@ public:
static const int JET_NUMQUEUEDSEGMENT_UPDATE = 3;
static const int JET_PAUSE_UPDATE = 4;
- JetPlayer(jobject javaJetPlayer,
- int maxTracks = 32,
+ JetPlayer(jobject javaJetPlayer,
+ int maxTracks = 32,
int trackBufferSize = 1200);
~JetPlayer();
int init();
int release();
-
+
int loadFromFile(const char* url);
int loadFromFD(const int fd, const long long offset, const long long length);
int closeFile();
@@ -60,7 +60,7 @@ public:
int clearQueue();
void setEventCallback(jetevent_callback callback);
-
+
int getMaxTracks() { return mMaxTracks; };
@@ -88,7 +88,7 @@ private:
int mMaxTracks; // max number of MIDI tracks, usually 32
EAS_DATA_HANDLE mEasData;
EAS_FILE_LOCATOR mEasJetFileLoc;
- EAS_PCM* mAudioBuffer;// EAS renders the MIDI data into this buffer,
+ EAS_PCM* mAudioBuffer;// EAS renders the MIDI data into this buffer,
AudioTrack* mAudioTrack; // and we play it in this audio track
int mTrackBufferSize;
S_JET_STATUS mJetStatus;
diff --git a/include/media/MediaMetadataRetrieverInterface.h b/include/media/MediaMetadataRetrieverInterface.h
index 27b7e4d..ecc3b65 100644
--- a/include/media/MediaMetadataRetrieverInterface.h
+++ b/include/media/MediaMetadataRetrieverInterface.h
@@ -1,6 +1,6 @@
/*
**
-** Copyright (C) 2008 The Android Open Source Project
+** Copyright (C) 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.
@@ -56,4 +56,3 @@ public:
}; // namespace android
#endif // ANDROID_MEDIAMETADATARETRIEVERINTERFACE_H
-
diff --git a/include/media/MediaPlayerInterface.h b/include/media/MediaPlayerInterface.h
index 8168dff..d4aa233 100644
--- a/include/media/MediaPlayerInterface.h
+++ b/include/media/MediaPlayerInterface.h
@@ -107,6 +107,7 @@ public:
virtual void close() = 0;
virtual status_t setPlaybackRatePermille(int32_t rate) { return INVALID_OPERATION; }
+ virtual bool needsTrailingPadding() { return true; }
};
MediaPlayerBase() : mCookie(0), mNotify(0) {}
diff --git a/include/media/MediaProfiles.h b/include/media/MediaProfiles.h
index 250f267..9fc962c 100644
--- a/include/media/MediaProfiles.h
+++ b/include/media/MediaProfiles.h
@@ -516,4 +516,3 @@ private:
}; // namespace android
#endif // ANDROID_MEDIAPROFILES_H
-
diff --git a/include/media/MemoryLeakTrackUtil.h b/include/media/MemoryLeakTrackUtil.h
index ac0f6b2..d2618aa 100644
--- a/include/media/MemoryLeakTrackUtil.h
+++ b/include/media/MemoryLeakTrackUtil.h
@@ -1,4 +1,3 @@
-
/*
* Copyright 2011, The Android Open Source Project
*
diff --git a/include/media/mediaplayer.h b/include/media/mediaplayer.h
index 9cd5f9f..662dd13 100644
--- a/include/media/mediaplayer.h
+++ b/include/media/mediaplayer.h
@@ -96,6 +96,9 @@ enum media_error_type {
enum media_info_type {
// 0xx
MEDIA_INFO_UNKNOWN = 1,
+ // The player was started because it was used as the next player for another
+ // player, which just completed playback
+ MEDIA_INFO_STARTED_AS_NEXT = 2,
// 7xx
// The video is too complex for the decoder: it can't decode frames fast
// enough. Possibly only the audio plays fine at this stage.
@@ -207,6 +210,7 @@ public:
status_t setParameter(int key, const Parcel& request);
status_t getParameter(int key, Parcel* reply);
status_t setRetransmitEndpoint(const char* addrString, uint16_t port);
+ status_t setNextMediaPlayer(const sp<MediaPlayer>& player);
private:
void clear_l();
diff --git a/include/media/stagefright/HardwareAPI.h b/include/media/stagefright/HardwareAPI.h
deleted file mode 100644
index 17efd35..0000000
--- a/include/media/stagefright/HardwareAPI.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2009 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 HARDWARE_API_H_
-
-#define HARDWARE_API_H_
-
-#include <media/stagefright/OMXPluginBase.h>
-#include <system/window.h>
-#include <utils/RefBase.h>
-
-#include <OMX_Component.h>
-
-namespace android {
-
-// A pointer to this struct is passed to the OMX_SetParameter when the extension
-// index for the 'OMX.google.android.index.enableAndroidNativeBuffers' extension
-// is given.
-//
-// When Android native buffer use is disabled for a port (the default state),
-// the OMX node should operate as normal, and expect UseBuffer calls to set its
-// buffers. This is the mode that will be used when CPU access to the buffer is
-// required.
-//
-// When Android native buffer use has been enabled for a given port, the video
-// color format for the port is to be interpreted as an Android pixel format
-// rather than an OMX color format. The node should then expect to receive
-// UseAndroidNativeBuffer calls (via OMX_SetParameter) rather than UseBuffer
-// calls for that port.
-struct EnableAndroidNativeBuffersParams {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL enable;
-};
-
-// A pointer to this struct is passed to OMX_SetParameter() when the extension
-// index "OMX.google.android.index.storeMetaDataInBuffers"
-// is given.
-//
-// When meta data is stored in the video buffers passed between OMX clients
-// and OMX components, interpretation of the buffer data is up to the
-// buffer receiver, and the data may or may not be the actual video data, but
-// some information helpful for the receiver to locate the actual data.
-// The buffer receiver thus needs to know how to interpret what is stored
-// in these buffers, with mechanisms pre-determined externally. How to
-// interpret the meta data is outside of the scope of this method.
-//
-// Currently, this is specifically used to pass meta data from video source
-// (camera component, for instance) to video encoder to avoid memcpying of
-// input video frame data. To do this, bStoreMetaDta is set to OMX_TRUE.
-// If bStoreMetaData is set to false, real YUV frame data will be stored
-// in the buffers. In addition, if no OMX_SetParameter() call is made
-// with the corresponding extension index, real YUV data is stored
-// in the buffers.
-struct StoreMetaDataInBuffersParams {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bStoreMetaData;
-};
-
-// A pointer to this struct is passed to OMX_SetParameter when the extension
-// index for the 'OMX.google.android.index.useAndroidNativeBuffer' extension is
-// given. This call will only be performed if a prior call was made with the
-// 'OMX.google.android.index.enableAndroidNativeBuffers' extension index,
-// enabling use of Android native buffers.
-struct UseAndroidNativeBufferParams {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_PTR pAppPrivate;
- OMX_BUFFERHEADERTYPE **bufferHeader;
- const sp<ANativeWindowBuffer>& nativeBuffer;
-};
-
-// A pointer to this struct is passed to OMX_GetParameter when the extension
-// index for the 'OMX.google.android.index.getAndroidNativeBufferUsage'
-// extension is given. The usage bits returned from this query will be used to
-// allocate the Gralloc buffers that get passed to the useAndroidNativeBuffer
-// command.
-struct GetAndroidNativeBufferUsageParams {
- OMX_U32 nSize; // IN
- OMX_VERSIONTYPE nVersion; // IN
- OMX_U32 nPortIndex; // IN
- OMX_U32 nUsage; // OUT
-};
-
-// An enum OMX_COLOR_FormatAndroidOpaque to indicate an opaque colorformat
-// is declared in media/stagefright/openmax/OMX_IVCommon.h
-// This will inform the encoder that the actual
-// colorformat will be relayed by the GRalloc Buffers.
-// OMX_COLOR_FormatAndroidOpaque = 0x7F000001,
-
-
-} // namespace android
-
-extern android::OMXPluginBase *createOMXPlugin();
-
-#endif // HARDWARE_API_H_
diff --git a/include/media/stagefright/MetadataBufferType.h b/include/media/stagefright/MetadataBufferType.h
deleted file mode 100644
index 4eaf8ac..0000000
--- a/include/media/stagefright/MetadataBufferType.h
+++ /dev/null
@@ -1,94 +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 METADATA_BUFFER_TYPE_H
-#define METADATA_BUFFER_TYPE_H
-
-#ifdef __cplusplus
-extern "C" {
-namespace android {
-#endif
-
-/*
- * MetadataBufferType defines the type of the metadata buffers that
- * can be passed to video encoder component for encoding, via Stagefright
- * media recording framework. To see how to work with the metadata buffers
- * in media recording framework, please consult HardwareAPI.h
- *
- * The creator of metadata buffers and video encoder share common knowledge
- * on what is actually being stored in these metadata buffers, and
- * how the information can be used by the video encoder component
- * to locate the actual pixel data as the source input for video
- * encoder, plus whatever other information that is necessary. Stagefright
- * media recording framework does not need to know anything specific about the
- * metadata buffers, except for receving each individual metadata buffer
- * as the source input, making a copy of the metadata buffer, and passing the
- * copy via OpenMAX API to the video encoder component.
- *
- * The creator of the metadata buffers must ensure that the first
- * 4 bytes in every metadata buffer indicates its buffer type,
- * and the rest of the metadata buffer contains the
- * actual metadata information. When a video encoder component receives
- * a metadata buffer, it uses the first 4 bytes in that buffer to find
- * out the type of the metadata buffer, and takes action appropriate
- * to that type of metadata buffers (for instance, locate the actual
- * pixel data input and then encoding the input data to produce a
- * compressed output buffer).
- *
- * The following shows the layout of a metadata buffer,
- * where buffer type is a 4-byte field of MetadataBufferType,
- * and the payload is the metadata information.
- *
- * --------------------------------------------------------------
- * | buffer type | payload |
- * --------------------------------------------------------------
- *
- */
-typedef enum {
-
- /*
- * kMetadataBufferTypeCameraSource is used to indicate that
- * the source of the metadata buffer is the camera component.
- */
- kMetadataBufferTypeCameraSource = 0,
-
- /*
- * kMetadataBufferTypeGrallocSource is used to indicate that
- * the payload of the metadata buffers can be interpreted as
- * a buffer_handle_t.
- * So in this case,the metadata that the encoder receives
- * will have a byte stream that consists of two parts:
- * 1. First, there is an integer indicating that it is a GRAlloc
- * source (kMetadataBufferTypeGrallocSource)
- * 2. This is followed by the buffer_handle_t that is a handle to the
- * GRalloc buffer. The encoder needs to interpret this GRalloc handle
- * and encode the frames.
- * --------------------------------------------------------------
- * | kMetadataBufferTypeGrallocSource | sizeof(buffer_handle_t) |
- * --------------------------------------------------------------
- */
- kMetadataBufferTypeGrallocSource = 1,
-
- // Add more here...
-
-} MetadataBufferType;
-
-#ifdef __cplusplus
-} // namespace android
-}
-#endif
-
-#endif // METADATA_BUFFER_TYPE_H
diff --git a/include/media/stagefright/OMXPluginBase.h b/include/media/stagefright/OMXPluginBase.h
deleted file mode 100644
index 2fd8e12..0000000
--- a/include/media/stagefright/OMXPluginBase.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2009 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 OMX_PLUGIN_BASE_H_
-
-#define OMX_PLUGIN_BASE_H_
-
-#include <sys/types.h>
-
-#include <OMX_Component.h>
-
-#include <utils/String8.h>
-#include <utils/Vector.h>
-
-namespace android {
-
-struct OMXComponentBase;
-
-struct OMXPluginBase {
- OMXPluginBase() {}
- virtual ~OMXPluginBase() {}
-
- virtual OMX_ERRORTYPE makeComponentInstance(
- const char *name,
- const OMX_CALLBACKTYPE *callbacks,
- OMX_PTR appData,
- OMX_COMPONENTTYPE **component) = 0;
-
- virtual OMX_ERRORTYPE destroyComponentInstance(
- OMX_COMPONENTTYPE *component) = 0;
-
- virtual OMX_ERRORTYPE enumerateComponents(
- OMX_STRING name,
- size_t size,
- OMX_U32 index) = 0;
-
- virtual OMX_ERRORTYPE getRolesOfComponent(
- const char *name,
- Vector<String8> *roles) = 0;
-
-private:
- OMXPluginBase(const OMXPluginBase &);
- OMXPluginBase &operator=(const OMXPluginBase &);
-};
-
-} // namespace android
-
-#endif // OMX_PLUGIN_BASE_H_
diff --git a/include/media/stagefright/openmax/OMX_Audio.h b/include/media/stagefright/openmax/OMX_Audio.h
deleted file mode 100644
index 3482841..0000000
--- a/include/media/stagefright/openmax/OMX_Audio.h
+++ /dev/null
@@ -1,1328 +0,0 @@
-/* ------------------------------------------------------------------
- * Copyright (C) 1998-2009 PacketVideo
- *
- * 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.
- * -------------------------------------------------------------------
- */
-/*
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/** @file OMX_Audio.h - OpenMax IL version 1.1.2
- * The structures needed by Audio components to exchange
- * parameters and configuration data with the componenmilts.
- */
-
-#ifndef OMX_Audio_h
-#define OMX_Audio_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/* Each OMX header must include all required header files to allow the
- * header to compile without errors. The includes below are required
- * for this header file to compile successfully
- */
-
-#include <OMX_Core.h>
-
-/** @defgroup midi MIDI
- * @ingroup audio
- */
-
-/** @defgroup effects Audio effects
- * @ingroup audio
- */
-
-/** @defgroup audio OpenMAX IL Audio Domain
- * Structures for OpenMAX IL Audio domain
- * @{
- */
-
-/** Enumeration used to define the possible audio codings.
- * If "OMX_AUDIO_CodingUnused" is selected, the coding selection must
- * be done in a vendor specific way. Since this is for an audio
- * processing element this enum is relevant. However, for another
- * type of component other enums would be in this area.
- */
-typedef enum OMX_AUDIO_CODINGTYPE {
- OMX_AUDIO_CodingUnused = 0, /**< Placeholder value when coding is N/A */
- OMX_AUDIO_CodingAutoDetect, /**< auto detection of audio format */
- OMX_AUDIO_CodingPCM, /**< Any variant of PCM coding */
- OMX_AUDIO_CodingADPCM, /**< Any variant of ADPCM encoded data */
- OMX_AUDIO_CodingAMR, /**< Any variant of AMR encoded data */
- OMX_AUDIO_CodingGSMFR, /**< Any variant of GSM fullrate (i.e. GSM610) */
- OMX_AUDIO_CodingGSMEFR, /**< Any variant of GSM Enhanced Fullrate encoded data*/
- OMX_AUDIO_CodingGSMHR, /**< Any variant of GSM Halfrate encoded data */
- OMX_AUDIO_CodingPDCFR, /**< Any variant of PDC Fullrate encoded data */
- OMX_AUDIO_CodingPDCEFR, /**< Any variant of PDC Enhanced Fullrate encoded data */
- OMX_AUDIO_CodingPDCHR, /**< Any variant of PDC Halfrate encoded data */
- OMX_AUDIO_CodingTDMAFR, /**< Any variant of TDMA Fullrate encoded data (TIA/EIA-136-420) */
- OMX_AUDIO_CodingTDMAEFR, /**< Any variant of TDMA Enhanced Fullrate encoded data (TIA/EIA-136-410) */
- OMX_AUDIO_CodingQCELP8, /**< Any variant of QCELP 8kbps encoded data */
- OMX_AUDIO_CodingQCELP13, /**< Any variant of QCELP 13kbps encoded data */
- OMX_AUDIO_CodingEVRC, /**< Any variant of EVRC encoded data */
- OMX_AUDIO_CodingSMV, /**< Any variant of SMV encoded data */
- OMX_AUDIO_CodingG711, /**< Any variant of G.711 encoded data */
- OMX_AUDIO_CodingG723, /**< Any variant of G.723 dot 1 encoded data */
- OMX_AUDIO_CodingG726, /**< Any variant of G.726 encoded data */
- OMX_AUDIO_CodingG729, /**< Any variant of G.729 encoded data */
- OMX_AUDIO_CodingAAC, /**< Any variant of AAC encoded data */
- OMX_AUDIO_CodingMP3, /**< Any variant of MP3 encoded data */
- OMX_AUDIO_CodingSBC, /**< Any variant of SBC encoded data */
- OMX_AUDIO_CodingVORBIS, /**< Any variant of VORBIS encoded data */
- OMX_AUDIO_CodingWMA, /**< Any variant of WMA encoded data */
- OMX_AUDIO_CodingRA, /**< Any variant of RA encoded data */
- OMX_AUDIO_CodingMIDI, /**< Any variant of MIDI encoded data */
- OMX_AUDIO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_CodingMax = 0x7FFFFFFF
-} OMX_AUDIO_CODINGTYPE;
-
-
-/** The PortDefinition structure is used to define all of the parameters
- * necessary for the compliant component to setup an input or an output audio
- * path. If additional information is needed to define the parameters of the
- * port (such as frequency), additional structures must be sent such as the
- * OMX_AUDIO_PARAM_PCMMODETYPE structure to supply the extra parameters for the port.
- */
-typedef struct OMX_AUDIO_PORTDEFINITIONTYPE {
- OMX_STRING cMIMEType; /**< MIME type of data for the port */
- OMX_NATIVE_DEVICETYPE pNativeRender; /** < platform specific reference
- for an output device,
- otherwise this field is 0 */
- OMX_BOOL bFlagErrorConcealment; /**< Turns on error concealment if it is
- supported by the OMX component */
- OMX_AUDIO_CODINGTYPE eEncoding; /**< Type of data expected for this
- port (e.g. PCM, AMR, MP3, etc) */
-} OMX_AUDIO_PORTDEFINITIONTYPE;
-
-
-/** Port format parameter. This structure is used to enumerate
- * the various data input/output format supported by the port.
- */
-typedef struct OMX_AUDIO_PARAM_PORTFORMATTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Indicates which port to set */
- OMX_U32 nIndex; /**< Indicates the enumeration index for the format from 0x0 to N-1 */
- OMX_AUDIO_CODINGTYPE eEncoding; /**< Type of data expected for this port (e.g. PCM, AMR, MP3, etc) */
-} OMX_AUDIO_PARAM_PORTFORMATTYPE;
-
-
-/** PCM mode type */
-typedef enum OMX_AUDIO_PCMMODETYPE {
- OMX_AUDIO_PCMModeLinear = 0, /**< Linear PCM encoded data */
- OMX_AUDIO_PCMModeALaw, /**< A law PCM encoded data (G.711) */
- OMX_AUDIO_PCMModeMULaw, /**< Mu law PCM encoded data (G.711) */
- OMX_AUDIO_PCMModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_PCMModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_PCMModeMax = 0x7FFFFFFF
-} OMX_AUDIO_PCMMODETYPE;
-
-
-typedef enum OMX_AUDIO_CHANNELTYPE {
- OMX_AUDIO_ChannelNone = 0x0, /**< Unused or empty */
- OMX_AUDIO_ChannelLF = 0x1, /**< Left front */
- OMX_AUDIO_ChannelRF = 0x2, /**< Right front */
- OMX_AUDIO_ChannelCF = 0x3, /**< Center front */
- OMX_AUDIO_ChannelLS = 0x4, /**< Left surround */
- OMX_AUDIO_ChannelRS = 0x5, /**< Right surround */
- OMX_AUDIO_ChannelLFE = 0x6, /**< Low frequency effects */
- OMX_AUDIO_ChannelCS = 0x7, /**< Back surround */
- OMX_AUDIO_ChannelLR = 0x8, /**< Left rear. */
- OMX_AUDIO_ChannelRR = 0x9, /**< Right rear. */
- OMX_AUDIO_ChannelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_ChannelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_ChannelMax = 0x7FFFFFFF
-} OMX_AUDIO_CHANNELTYPE;
-
-#define OMX_AUDIO_MAXCHANNELS 16 /**< maximum number distinct audio channels that a buffer may contain */
-#define OMX_MIN_PCMPAYLOAD_MSEC 5 /**< Minimum audio buffer payload size for uncompressed (PCM) audio */
-
-/** PCM format description */
-typedef struct OMX_AUDIO_PARAM_PCMMODETYPE {
- OMX_U32 nSize; /**< Size of this structure, in Bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels (e.g. 2 for stereo) */
- OMX_NUMERICALDATATYPE eNumData; /**< indicates PCM data as signed or unsigned */
- OMX_ENDIANTYPE eEndian; /**< indicates PCM data as little or big endian */
- OMX_BOOL bInterleaved; /**< True for normal interleaved data; false for
- non-interleaved data (e.g. block data) */
- OMX_U32 nBitPerSample; /**< Bit per sample */
- OMX_U32 nSamplingRate; /**< Sampling rate of the source data. Use 0 for
- variable or unknown sampling rate. */
- OMX_AUDIO_PCMMODETYPE ePCMMode; /**< PCM mode enumeration */
- OMX_AUDIO_CHANNELTYPE eChannelMapping[OMX_AUDIO_MAXCHANNELS]; /**< Slot i contains channel defined by eChannelMap[i] */
-
-} OMX_AUDIO_PARAM_PCMMODETYPE;
-
-
-/** Audio channel mode. This is used by both AAC and MP3, although the names are more appropriate
- * for the MP3. For example, JointStereo for MP3 is CouplingChannels for AAC.
- */
-typedef enum OMX_AUDIO_CHANNELMODETYPE {
- OMX_AUDIO_ChannelModeStereo = 0, /**< 2 channels, the bitrate allocation between those
- two channels changes accordingly to each channel information */
- OMX_AUDIO_ChannelModeJointStereo, /**< mode that takes advantage of what is common between
- 2 channels for higher compression gain */
- OMX_AUDIO_ChannelModeDual, /**< 2 mono-channels, each channel is encoded with half
- the bitrate of the overall bitrate */
- OMX_AUDIO_ChannelModeMono, /**< Mono channel mode */
- OMX_AUDIO_ChannelModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_ChannelModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_ChannelModeMax = 0x7FFFFFFF
-} OMX_AUDIO_CHANNELMODETYPE;
-
-
-typedef enum OMX_AUDIO_MP3STREAMFORMATTYPE {
- OMX_AUDIO_MP3StreamFormatMP1Layer3 = 0, /**< MP3 Audio MPEG 1 Layer 3 Stream format */
- OMX_AUDIO_MP3StreamFormatMP2Layer3, /**< MP3 Audio MPEG 2 Layer 3 Stream format */
- OMX_AUDIO_MP3StreamFormatMP2_5Layer3, /**< MP3 Audio MPEG2.5 Layer 3 Stream format */
- OMX_AUDIO_MP3StreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_MP3StreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_MP3StreamFormatMax = 0x7FFFFFFF
-} OMX_AUDIO_MP3STREAMFORMATTYPE;
-
-/** MP3 params */
-typedef struct OMX_AUDIO_PARAM_MP3TYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels */
- OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable
- rate or unknown bit rates */
- OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
- variable or unknown sampling rate. */
- OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should
- limit the audio signal. Use 0 to let encoder decide */
- OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */
- OMX_AUDIO_MP3STREAMFORMATTYPE eFormat; /**< MP3 stream format */
-} OMX_AUDIO_PARAM_MP3TYPE;
-
-
-typedef enum OMX_AUDIO_AACSTREAMFORMATTYPE {
- OMX_AUDIO_AACStreamFormatMP2ADTS = 0, /**< AAC Audio Data Transport Stream 2 format */
- OMX_AUDIO_AACStreamFormatMP4ADTS, /**< AAC Audio Data Transport Stream 4 format */
- OMX_AUDIO_AACStreamFormatMP4LOAS, /**< AAC Low Overhead Audio Stream format */
- OMX_AUDIO_AACStreamFormatMP4LATM, /**< AAC Low overhead Audio Transport Multiplex */
- OMX_AUDIO_AACStreamFormatADIF, /**< AAC Audio Data Interchange Format */
- OMX_AUDIO_AACStreamFormatMP4FF, /**< AAC inside MPEG-4/ISO File Format */
- OMX_AUDIO_AACStreamFormatRAW, /**< AAC Raw Format */
- OMX_AUDIO_AACStreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_AACStreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_AACStreamFormatMax = 0x7FFFFFFF
-} OMX_AUDIO_AACSTREAMFORMATTYPE;
-
-
-/** AAC mode type. Note that the term profile is used with the MPEG-2
- * standard and the term object type and profile is used with MPEG-4 */
-typedef enum OMX_AUDIO_AACPROFILETYPE{
- OMX_AUDIO_AACObjectNull = 0, /**< Null, not used */
- OMX_AUDIO_AACObjectMain = 1, /**< AAC Main object */
- OMX_AUDIO_AACObjectLC, /**< AAC Low Complexity object (AAC profile) */
- OMX_AUDIO_AACObjectSSR, /**< AAC Scalable Sample Rate object */
- OMX_AUDIO_AACObjectLTP, /**< AAC Long Term Prediction object */
- OMX_AUDIO_AACObjectHE, /**< AAC High Efficiency (object type SBR, HE-AAC profile) */
- OMX_AUDIO_AACObjectScalable, /**< AAC Scalable object */
- OMX_AUDIO_AACObjectERLC = 17, /**< ER AAC Low Complexity object (Error Resilient AAC-LC) */
- OMX_AUDIO_AACObjectLD = 23, /**< AAC Low Delay object (Error Resilient) */
- OMX_AUDIO_AACObjectHE_PS = 29, /**< AAC High Efficiency with Parametric Stereo coding (HE-AAC v2, object type PS) */
- OMX_AUDIO_AACObjectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_AACObjectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_AACObjectMax = 0x7FFFFFFF
-} OMX_AUDIO_AACPROFILETYPE;
-
-
-/** AAC tool usage (for nAACtools in OMX_AUDIO_PARAM_AACPROFILETYPE).
- * Required for encoder configuration and optional as decoder info output.
- * For MP3, OMX_AUDIO_CHANNELMODETYPE is sufficient. */
-#define OMX_AUDIO_AACToolNone 0x00000000 /**< no AAC tools allowed (encoder config) or active (decoder info output) */
-#define OMX_AUDIO_AACToolMS 0x00000001 /**< MS: Mid/side joint coding tool allowed or active */
-#define OMX_AUDIO_AACToolIS 0x00000002 /**< IS: Intensity stereo tool allowed or active */
-#define OMX_AUDIO_AACToolTNS 0x00000004 /**< TNS: Temporal Noise Shaping tool allowed or active */
-#define OMX_AUDIO_AACToolPNS 0x00000008 /**< PNS: MPEG-4 Perceptual Noise substitution tool allowed or active */
-#define OMX_AUDIO_AACToolLTP 0x00000010 /**< LTP: MPEG-4 Long Term Prediction tool allowed or active */
-#define OMX_AUDIO_AACToolAll 0x7FFFFFFF /**< all AAC tools allowed or active (*/
-
-/** MPEG-4 AAC error resilience (ER) tool usage (for nAACERtools in OMX_AUDIO_PARAM_AACPROFILETYPE).
- * Required for ER encoder configuration and optional as decoder info output */
-#define OMX_AUDIO_AACERNone 0x00000000 /**< no AAC ER tools allowed/used */
-#define OMX_AUDIO_AACERVCB11 0x00000001 /**< VCB11: Virtual Code Books for AAC section data */
-#define OMX_AUDIO_AACERRVLC 0x00000002 /**< RVLC: Reversible Variable Length Coding */
-#define OMX_AUDIO_AACERHCR 0x00000004 /**< HCR: Huffman Codeword Reordering */
-#define OMX_AUDIO_AACERAll 0x7FFFFFFF /**< all AAC ER tools allowed/used */
-
-
-/** AAC params */
-typedef struct OMX_AUDIO_PARAM_AACPROFILETYPE {
- OMX_U32 nSize; /**< Size of this structure, in Bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels */
- OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
- variable or unknown sampling rate. */
- OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable
- rate or unknown bit rates */
- OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should
- limit the audio signal. Use 0 to let encoder decide */
- OMX_U32 nFrameLength; /**< Frame length (in audio samples per channel) of the codec.
- Can be 1024 or 960 (AAC-LC), 2048 (HE-AAC), 480 or 512 (AAC-LD).
- Use 0 to let encoder decide */
- OMX_U32 nAACtools; /**< AAC tool usage */
- OMX_U32 nAACERtools; /**< MPEG-4 AAC error resilience tool usage */
- OMX_AUDIO_AACPROFILETYPE eAACProfile; /**< AAC profile enumeration */
- OMX_AUDIO_AACSTREAMFORMATTYPE eAACStreamFormat; /**< AAC stream format enumeration */
- OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */
-} OMX_AUDIO_PARAM_AACPROFILETYPE;
-
-
-/** VORBIS params */
-typedef struct OMX_AUDIO_PARAM_VORBISTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels */
- OMX_U32 nBitRate; /**< Bit rate of the encoded data data. Use 0 for variable
- rate or unknown bit rates. Encoding is set to the
- bitrate closest to specified value (in bps) */
- OMX_U32 nMinBitRate; /**< Sets minimum bitrate (in bps). */
- OMX_U32 nMaxBitRate; /**< Sets maximum bitrate (in bps). */
-
- OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
- variable or unknown sampling rate. */
- OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should
- limit the audio signal. Use 0 to let encoder decide */
- OMX_S32 nQuality; /**< Sets encoding quality to n, between -1 (low) and 10 (high).
- In the default mode of operation, teh quality level is 3.
- Normal quality range is 0 - 10. */
- OMX_BOOL bManaged; /**< Set bitrate management mode. This turns off the
- normal VBR encoding, but allows hard or soft bitrate
- constraints to be enforced by the encoder. This mode can
- be slower, and may also be lower quality. It is
- primarily useful for streaming. */
- OMX_BOOL bDownmix; /**< Downmix input from stereo to mono (has no effect on
- non-stereo streams). Useful for lower-bitrate encoding. */
-} OMX_AUDIO_PARAM_VORBISTYPE;
-
-
-/** WMA Version */
-typedef enum OMX_AUDIO_WMAFORMATTYPE {
- OMX_AUDIO_WMAFormatUnused = 0, /**< format unused or unknown */
- OMX_AUDIO_WMAFormat7, /**< Windows Media Audio format 7 */
- OMX_AUDIO_WMAFormat8, /**< Windows Media Audio format 8 */
- OMX_AUDIO_WMAFormat9, /**< Windows Media Audio format 9 */
- OMX_AUDIO_WMAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_WMAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_WMAFormatMax = 0x7FFFFFFF
-} OMX_AUDIO_WMAFORMATTYPE;
-
-
-/** WMA Profile */
-typedef enum OMX_AUDIO_WMAPROFILETYPE {
- OMX_AUDIO_WMAProfileUnused = 0, /**< profile unused or unknown */
- OMX_AUDIO_WMAProfileL1, /**< Windows Media audio version 9 profile L1 */
- OMX_AUDIO_WMAProfileL2, /**< Windows Media audio version 9 profile L2 */
- OMX_AUDIO_WMAProfileL3, /**< Windows Media audio version 9 profile L3 */
- OMX_AUDIO_WMAProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_WMAProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_WMAProfileMax = 0x7FFFFFFF
-} OMX_AUDIO_WMAPROFILETYPE;
-
-
-/** WMA params */
-typedef struct OMX_AUDIO_PARAM_WMATYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U16 nChannels; /**< Number of channels */
- OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable
- rate or unknown bit rates */
- OMX_AUDIO_WMAFORMATTYPE eFormat; /**< Version of WMA stream / data */
- OMX_AUDIO_WMAPROFILETYPE eProfile; /**< Profile of WMA stream / data */
- OMX_U32 nSamplingRate; /**< Sampling rate of the source data */
- OMX_U16 nBlockAlign; /**< is the block alignment, or block size, in bytes of the audio codec */
- OMX_U16 nEncodeOptions; /**< WMA Type-specific data */
- OMX_U32 nSuperBlockAlign; /**< WMA Type-specific data */
-} OMX_AUDIO_PARAM_WMATYPE;
-
-/**
- * RealAudio format
- */
-typedef enum OMX_AUDIO_RAFORMATTYPE {
- OMX_AUDIO_RAFormatUnused = 0, /**< Format unused or unknown */
- OMX_AUDIO_RA8, /**< RealAudio 8 codec */
- OMX_AUDIO_RA9, /**< RealAudio 9 codec */
- OMX_AUDIO_RA10_AAC, /**< MPEG-4 AAC codec for bitrates of more than 128kbps */
- OMX_AUDIO_RA10_CODEC, /**< RealAudio codec for bitrates less than 128 kbps */
- OMX_AUDIO_RA10_LOSSLESS, /**< RealAudio Lossless */
- OMX_AUDIO_RA10_MULTICHANNEL, /**< RealAudio Multichannel */
- OMX_AUDIO_RA10_VOICE, /**< RealAudio Voice for bitrates below 15 kbps */
- OMX_AUDIO_RAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_RAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_RAFormatMax = 0x7FFFFFFF
-} OMX_AUDIO_RAFORMATTYPE;
-
-/** RA (Real Audio) params */
-typedef struct OMX_AUDIO_PARAM_RATYPE {
- OMX_U32 nSize; /**< Size of this structure, in Bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels */
- OMX_U32 nSamplingRate; /**< is the sampling rate of the source data */
- OMX_U32 nBitsPerFrame; /**< is the value for bits per frame */
- OMX_U32 nSamplePerFrame; /**< is the value for samples per frame */
- OMX_U32 nCouplingQuantBits; /**< is the number of coupling quantization bits in the stream */
- OMX_U32 nCouplingStartRegion; /**< is the coupling start region in the stream */
- OMX_U32 nNumRegions; /**< is the number of regions value */
- OMX_AUDIO_RAFORMATTYPE eFormat; /**< is the RealAudio audio format */
-} OMX_AUDIO_PARAM_RATYPE;
-
-
-/** SBC Allocation Method Type */
-typedef enum OMX_AUDIO_SBCALLOCMETHODTYPE {
- OMX_AUDIO_SBCAllocMethodLoudness, /**< Loudness allocation method */
- OMX_AUDIO_SBCAllocMethodSNR, /**< SNR allocation method */
- OMX_AUDIO_SBCAllocMethodKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_SBCAllocMethodVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_SBCAllocMethodMax = 0x7FFFFFFF
-} OMX_AUDIO_SBCALLOCMETHODTYPE;
-
-
-/** SBC params */
-typedef struct OMX_AUDIO_PARAM_SBCTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels */
- OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable
- rate or unknown bit rates */
- OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
- variable or unknown sampling rate. */
- OMX_U32 nBlocks; /**< Number of blocks */
- OMX_U32 nSubbands; /**< Number of subbands */
- OMX_U32 nBitPool; /**< Bitpool value */
- OMX_BOOL bEnableBitrate; /**< Use bitrate value instead of bitpool */
- OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */
- OMX_AUDIO_SBCALLOCMETHODTYPE eSBCAllocType; /**< SBC Allocation method type */
-} OMX_AUDIO_PARAM_SBCTYPE;
-
-
-/** ADPCM stream format parameters */
-typedef struct OMX_AUDIO_PARAM_ADPCMTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_U32 nBitsPerSample; /**< Number of bits in each sample */
- OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
- variable or unknown sampling rate. */
-} OMX_AUDIO_PARAM_ADPCMTYPE;
-
-
-/** G723 rate */
-typedef enum OMX_AUDIO_G723RATE {
- OMX_AUDIO_G723ModeUnused = 0, /**< AMRNB Mode unused / unknown */
- OMX_AUDIO_G723ModeLow, /**< 5300 bps */
- OMX_AUDIO_G723ModeHigh, /**< 6300 bps */
- OMX_AUDIO_G723ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_G723ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_G723ModeMax = 0x7FFFFFFF
-} OMX_AUDIO_G723RATE;
-
-
-/** G723 - Sample rate must be 8 KHz */
-typedef struct OMX_AUDIO_PARAM_G723TYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_AUDIO_G723RATE eBitRate; /**< todo: Should this be moved to a config? */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
- OMX_BOOL bPostFilter; /**< Enable Post Filter */
-} OMX_AUDIO_PARAM_G723TYPE;
-
-
-/** ITU G726 (ADPCM) rate */
-typedef enum OMX_AUDIO_G726MODE {
- OMX_AUDIO_G726ModeUnused = 0, /**< G726 Mode unused / unknown */
- OMX_AUDIO_G726Mode16, /**< 16 kbps */
- OMX_AUDIO_G726Mode24, /**< 24 kbps */
- OMX_AUDIO_G726Mode32, /**< 32 kbps, most common rate, also G721 */
- OMX_AUDIO_G726Mode40, /**< 40 kbps */
- OMX_AUDIO_G726ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_G726ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_G726ModeMax = 0x7FFFFFFF
-} OMX_AUDIO_G726MODE;
-
-
-/** G.726 stream format parameters - must be at 8KHz */
-typedef struct OMX_AUDIO_PARAM_G726TYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_AUDIO_G726MODE eG726Mode;
-} OMX_AUDIO_PARAM_G726TYPE;
-
-
-/** G729 coder type */
-typedef enum OMX_AUDIO_G729TYPE {
- OMX_AUDIO_G729 = 0, /**< ITU G.729 encoded data */
- OMX_AUDIO_G729A, /**< ITU G.729 annex A encoded data */
- OMX_AUDIO_G729B, /**< ITU G.729 with annex B encoded data */
- OMX_AUDIO_G729AB, /**< ITU G.729 annexes A and B encoded data */
- OMX_AUDIO_G729KhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_G729VendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_G729Max = 0x7FFFFFFF
-} OMX_AUDIO_G729TYPE;
-
-
-/** G729 stream format parameters - fixed 6KHz sample rate */
-typedef struct OMX_AUDIO_PARAM_G729TYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_AUDIO_G729TYPE eBitType;
-} OMX_AUDIO_PARAM_G729TYPE;
-
-
-/** AMR Frame format */
-typedef enum OMX_AUDIO_AMRFRAMEFORMATTYPE {
- OMX_AUDIO_AMRFrameFormatConformance = 0, /**< Frame Format is AMR Conformance
- (Standard) Format */
- OMX_AUDIO_AMRFrameFormatIF1, /**< Frame Format is AMR Interface
- Format 1 */
- OMX_AUDIO_AMRFrameFormatIF2, /**< Frame Format is AMR Interface
- Format 2*/
- OMX_AUDIO_AMRFrameFormatFSF, /**< Frame Format is AMR File Storage
- Format */
- OMX_AUDIO_AMRFrameFormatRTPPayload, /**< Frame Format is AMR Real-Time
- Transport Protocol Payload Format */
- OMX_AUDIO_AMRFrameFormatITU, /**< Frame Format is ITU Format (added at Motorola request) */
- OMX_AUDIO_AMRFrameFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_AMRFrameFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_AMRFrameFormatMax = 0x7FFFFFFF
-} OMX_AUDIO_AMRFRAMEFORMATTYPE;
-
-
-/** AMR band mode */
-typedef enum OMX_AUDIO_AMRBANDMODETYPE {
- OMX_AUDIO_AMRBandModeUnused = 0, /**< AMRNB Mode unused / unknown */
- OMX_AUDIO_AMRBandModeNB0, /**< AMRNB Mode 0 = 4750 bps */
- OMX_AUDIO_AMRBandModeNB1, /**< AMRNB Mode 1 = 5150 bps */
- OMX_AUDIO_AMRBandModeNB2, /**< AMRNB Mode 2 = 5900 bps */
- OMX_AUDIO_AMRBandModeNB3, /**< AMRNB Mode 3 = 6700 bps */
- OMX_AUDIO_AMRBandModeNB4, /**< AMRNB Mode 4 = 7400 bps */
- OMX_AUDIO_AMRBandModeNB5, /**< AMRNB Mode 5 = 7950 bps */
- OMX_AUDIO_AMRBandModeNB6, /**< AMRNB Mode 6 = 10200 bps */
- OMX_AUDIO_AMRBandModeNB7, /**< AMRNB Mode 7 = 12200 bps */
- OMX_AUDIO_AMRBandModeWB0, /**< AMRWB Mode 0 = 6600 bps */
- OMX_AUDIO_AMRBandModeWB1, /**< AMRWB Mode 1 = 8850 bps */
- OMX_AUDIO_AMRBandModeWB2, /**< AMRWB Mode 2 = 12650 bps */
- OMX_AUDIO_AMRBandModeWB3, /**< AMRWB Mode 3 = 14250 bps */
- OMX_AUDIO_AMRBandModeWB4, /**< AMRWB Mode 4 = 15850 bps */
- OMX_AUDIO_AMRBandModeWB5, /**< AMRWB Mode 5 = 18250 bps */
- OMX_AUDIO_AMRBandModeWB6, /**< AMRWB Mode 6 = 19850 bps */
- OMX_AUDIO_AMRBandModeWB7, /**< AMRWB Mode 7 = 23050 bps */
- OMX_AUDIO_AMRBandModeWB8, /**< AMRWB Mode 8 = 23850 bps */
- OMX_AUDIO_AMRBandModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_AMRBandModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_AMRBandModeMax = 0x7FFFFFFF
-} OMX_AUDIO_AMRBANDMODETYPE;
-
-
-/** AMR Discontinuous Transmission mode */
-typedef enum OMX_AUDIO_AMRDTXMODETYPE {
- OMX_AUDIO_AMRDTXModeOff = 0, /**< AMR Discontinuous Transmission Mode is disabled */
- OMX_AUDIO_AMRDTXModeOnVAD1, /**< AMR Discontinuous Transmission Mode using
- Voice Activity Detector 1 (VAD1) is enabled */
- OMX_AUDIO_AMRDTXModeOnVAD2, /**< AMR Discontinuous Transmission Mode using
- Voice Activity Detector 2 (VAD2) is enabled */
- OMX_AUDIO_AMRDTXModeOnAuto, /**< The codec will automatically select between
- Off, VAD1 or VAD2 modes */
-
- OMX_AUDIO_AMRDTXasEFR, /**< DTX as EFR instead of AMR standard (3GPP 26.101, frame type =8,9,10) */
-
- OMX_AUDIO_AMRDTXModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_AMRDTXModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_AMRDTXModeMax = 0x7FFFFFFF
-} OMX_AUDIO_AMRDTXMODETYPE;
-
-
-/** AMR params */
-typedef struct OMX_AUDIO_PARAM_AMRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels */
- OMX_U32 nBitRate; /**< Bit rate read only field */
- OMX_AUDIO_AMRBANDMODETYPE eAMRBandMode; /**< AMR Band Mode enumeration */
- OMX_AUDIO_AMRDTXMODETYPE eAMRDTXMode; /**< AMR DTX Mode enumeration */
- OMX_AUDIO_AMRFRAMEFORMATTYPE eAMRFrameFormat; /**< AMR frame format enumeration */
-} OMX_AUDIO_PARAM_AMRTYPE;
-
-
-/** GSM_FR (ETSI 06.10, 3GPP 46.010) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_GSMFRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
-} OMX_AUDIO_PARAM_GSMFRTYPE;
-
-
-/** GSM-HR (ETSI 06.20, 3GPP 46.020) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_GSMHRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
-} OMX_AUDIO_PARAM_GSMHRTYPE;
-
-
-/** GSM-EFR (ETSI 06.60, 3GPP 46.060) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_GSMEFRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
-} OMX_AUDIO_PARAM_GSMEFRTYPE;
-
-
-/** TDMA FR (TIA/EIA-136-420, VSELP 7.95kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_TDMAFRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
-} OMX_AUDIO_PARAM_TDMAFRTYPE;
-
-
-/** TDMA EFR (TIA/EIA-136-410, ACELP 7.4kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_TDMAEFRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
-} OMX_AUDIO_PARAM_TDMAEFRTYPE;
-
-
-/** PDC FR ( RCR-27, VSELP 6.7kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_PDCFRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
-} OMX_AUDIO_PARAM_PDCFRTYPE;
-
-
-/** PDC EFR ( RCR-27, ACELP 6.7kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_PDCEFRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
-} OMX_AUDIO_PARAM_PDCEFRTYPE;
-
-/** PDC HR ( RCR-27, PSI-CELP 3.45kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_PDCHRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
-} OMX_AUDIO_PARAM_PDCHRTYPE;
-
-
-/** CDMA Rate types */
-typedef enum OMX_AUDIO_CDMARATETYPE {
- OMX_AUDIO_CDMARateBlank = 0, /**< CDMA encoded frame is blank */
- OMX_AUDIO_CDMARateFull, /**< CDMA encoded frame in full rate */
- OMX_AUDIO_CDMARateHalf, /**< CDMA encoded frame in half rate */
- OMX_AUDIO_CDMARateQuarter, /**< CDMA encoded frame in quarter rate */
- OMX_AUDIO_CDMARateEighth, /**< CDMA encoded frame in eighth rate (DTX)*/
- OMX_AUDIO_CDMARateErasure, /**< CDMA erasure frame */
- OMX_AUDIO_CDMARateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_CDMARateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_CDMARateMax = 0x7FFFFFFF
-} OMX_AUDIO_CDMARATETYPE;
-
-
-/** QCELP8 (TIA/EIA-96, up to 8kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_QCELP8TYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable
- rate or unknown bit rates */
- OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */
- OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */
- OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */
-} OMX_AUDIO_PARAM_QCELP8TYPE;
-
-
-/** QCELP13 ( CDMA, EIA/TIA-733, 13.3kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_QCELP13TYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */
- OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */
- OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */
-} OMX_AUDIO_PARAM_QCELP13TYPE;
-
-
-/** EVRC ( CDMA, EIA/TIA-127, RCELP up to 8.55kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_EVRCTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_AUDIO_CDMARATETYPE eCDMARate; /**< actual Frame rate */
- OMX_BOOL bRATE_REDUCon; /**< RATE_REDUCtion is requested for this frame */
- OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */
- OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */
- OMX_BOOL bHiPassFilter; /**< Enable encoder's High Pass Filter */
- OMX_BOOL bNoiseSuppressor; /**< Enable encoder's noise suppressor pre-processing */
- OMX_BOOL bPostFilter; /**< Enable decoder's post Filter */
-} OMX_AUDIO_PARAM_EVRCTYPE;
-
-
-/** SMV ( up to 8.55kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_SMVTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */
- OMX_BOOL bRATE_REDUCon; /**< RATE_REDUCtion is requested for this frame */
- OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 ??*/
- OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 ??*/
- OMX_BOOL bHiPassFilter; /**< Enable encoder's High Pass Filter ??*/
- OMX_BOOL bNoiseSuppressor; /**< Enable encoder's noise suppressor pre-processing */
- OMX_BOOL bPostFilter; /**< Enable decoder's post Filter ??*/
-} OMX_AUDIO_PARAM_SMVTYPE;
-
-
-/** MIDI Format
- * @ingroup midi
- */
-typedef enum OMX_AUDIO_MIDIFORMATTYPE
-{
- OMX_AUDIO_MIDIFormatUnknown = 0, /**< MIDI Format unknown or don't care */
- OMX_AUDIO_MIDIFormatSMF0, /**< Standard MIDI File Type 0 */
- OMX_AUDIO_MIDIFormatSMF1, /**< Standard MIDI File Type 1 */
- OMX_AUDIO_MIDIFormatSMF2, /**< Standard MIDI File Type 2 */
- OMX_AUDIO_MIDIFormatSPMIDI, /**< SP-MIDI */
- OMX_AUDIO_MIDIFormatXMF0, /**< eXtensible Music Format type 0 */
- OMX_AUDIO_MIDIFormatXMF1, /**< eXtensible Music Format type 1 */
- OMX_AUDIO_MIDIFormatMobileXMF, /**< Mobile XMF (eXtensible Music Format type 2) */
- OMX_AUDIO_MIDIFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_MIDIFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_MIDIFormatMax = 0x7FFFFFFF
-} OMX_AUDIO_MIDIFORMATTYPE;
-
-
-/** MIDI params
- * @ingroup midi
- */
-typedef struct OMX_AUDIO_PARAM_MIDITYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nFileSize; /**< size of the MIDI file in bytes, where the entire
- MIDI file passed in, otherwise if 0x0, the MIDI data
- is merged and streamed (instead of passed as an
- entire MIDI file) */
- OMX_BU32 sMaxPolyphony; /**< Specifies the maximum simultaneous polyphonic
- voices. A value of zero indicates that the default
- polyphony of the device is used */
- OMX_BOOL bLoadDefaultSound; /**< Whether to load default sound
- bank at initialization */
- OMX_AUDIO_MIDIFORMATTYPE eMidiFormat; /**< Version of the MIDI file */
-} OMX_AUDIO_PARAM_MIDITYPE;
-
-
-/** Type of the MIDI sound bank
- * @ingroup midi
- */
-typedef enum OMX_AUDIO_MIDISOUNDBANKTYPE {
- OMX_AUDIO_MIDISoundBankUnused = 0, /**< unused/unknown soundbank type */
- OMX_AUDIO_MIDISoundBankDLS1, /**< DLS version 1 */
- OMX_AUDIO_MIDISoundBankDLS2, /**< DLS version 2 */
- OMX_AUDIO_MIDISoundBankMobileDLSBase, /**< Mobile DLS, using the base functionality */
- OMX_AUDIO_MIDISoundBankMobileDLSPlusOptions, /**< Mobile DLS, using the specification-defined optional feature set */
- OMX_AUDIO_MIDISoundBankKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_MIDISoundBankVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_MIDISoundBankMax = 0x7FFFFFFF
-} OMX_AUDIO_MIDISOUNDBANKTYPE;
-
-
-/** Bank Layout describes how bank MSB & LSB are used in the DLS instrument definitions sound bank
- * @ingroup midi
- */
-typedef enum OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE {
- OMX_AUDIO_MIDISoundBankLayoutUnused = 0, /**< unused/unknown soundbank type */
- OMX_AUDIO_MIDISoundBankLayoutGM, /**< GS layout (based on bank MSB 0x00) */
- OMX_AUDIO_MIDISoundBankLayoutGM2, /**< General MIDI 2 layout (using MSB 0x78/0x79, LSB 0x00) */
- OMX_AUDIO_MIDISoundBankLayoutUser, /**< Does not conform to any bank numbering standards */
- OMX_AUDIO_MIDISoundBankLayoutKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_MIDISoundBankLayoutVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_MIDISoundBankLayoutMax = 0x7FFFFFFF
-} OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE;
-
-
-/** MIDI params to load/unload user soundbank
- * @ingroup midi
- */
-typedef struct OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nDLSIndex; /**< DLS file index to be loaded */
- OMX_U32 nDLSSize; /**< Size in bytes */
- OMX_PTR pDLSData; /**< Pointer to DLS file data */
- OMX_AUDIO_MIDISOUNDBANKTYPE eMidiSoundBank; /**< Midi sound bank type enumeration */
- OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE eMidiSoundBankLayout; /**< Midi sound bank layout enumeration */
-} OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE;
-
-
-/** Structure for Live MIDI events and MIP messages.
- * (MIP = Maximum Instantaneous Polyphony; part of the SP-MIDI standard.)
- * @ingroup midi
- */
-typedef struct OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port that this structure applies to */
- OMX_U32 nMidiEventSize; /**< Size of immediate MIDI events or MIP message in bytes */
- OMX_U8 nMidiEvents[1]; /**< MIDI event array to be rendered immediately, or an
- array for the MIP message buffer, where the size is
- indicated by nMidiEventSize */
-} OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE;
-
-
-/** MIDI sound bank/ program pair in a given channel
- * @ingroup midi
- */
-typedef struct OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port that this structure applies to */
- OMX_U32 nChannel; /**< Valid channel values range from 1 to 16 */
- OMX_U16 nIDProgram; /**< Valid program ID range is 1 to 128 */
- OMX_U16 nIDSoundBank; /**< Sound bank ID */
- OMX_U32 nUserSoundBankIndex;/**< User soundbank index, easier to access soundbanks
- by index if multiple banks are present */
-} OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE;
-
-
-/** MIDI control
- * @ingroup midi
- */
-typedef struct OMX_AUDIO_CONFIG_MIDICONTROLTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BS32 sPitchTransposition; /**< Pitch transposition in semitones, stored as Q22.10
- format based on JAVA MMAPI (JSR-135) requirement */
- OMX_BU32 sPlayBackRate; /**< Relative playback rate, stored as Q14.17 fixed-point
- number based on JSR-135 requirement */
- OMX_BU32 sTempo ; /**< Tempo in beats per minute (BPM), stored as Q22.10
- fixed-point number based on JSR-135 requirement */
- OMX_U32 nMaxPolyphony; /**< Specifies the maximum simultaneous polyphonic
- voices. A value of zero indicates that the default
- polyphony of the device is used */
- OMX_U32 nNumRepeat; /**< Number of times to repeat playback */
- OMX_U32 nStopTime; /**< Time in milliseconds to indicate when playback
- will stop automatically. Set to zero if not used */
- OMX_U16 nChannelMuteMask; /**< 16 bit mask for channel mute status */
- OMX_U16 nChannelSoloMask; /**< 16 bit mask for channel solo status */
- OMX_U32 nTrack0031MuteMask; /**< 32 bit mask for track mute status. Note: This is for tracks 0-31 */
- OMX_U32 nTrack3263MuteMask; /**< 32 bit mask for track mute status. Note: This is for tracks 32-63 */
- OMX_U32 nTrack0031SoloMask; /**< 32 bit mask for track solo status. Note: This is for tracks 0-31 */
- OMX_U32 nTrack3263SoloMask; /**< 32 bit mask for track solo status. Note: This is for tracks 32-63 */
-
-} OMX_AUDIO_CONFIG_MIDICONTROLTYPE;
-
-
-/** MIDI Playback States
- * @ingroup midi
- */
-typedef enum OMX_AUDIO_MIDIPLAYBACKSTATETYPE {
- OMX_AUDIO_MIDIPlayBackStateUnknown = 0, /**< Unknown state or state does not map to
- other defined states */
- OMX_AUDIO_MIDIPlayBackStateClosedEngaged, /**< No MIDI resource is currently open.
- The MIDI engine is currently processing
- MIDI events. */
- OMX_AUDIO_MIDIPlayBackStateParsing, /**< A MIDI resource is open and is being
- primed. The MIDI engine is currently
- processing MIDI events. */
- OMX_AUDIO_MIDIPlayBackStateOpenEngaged, /**< A MIDI resource is open and primed but
- not playing. The MIDI engine is currently
- processing MIDI events. The transition to
- this state is only possible from the
- OMX_AUDIO_MIDIPlayBackStatePlaying state,
- when the 'playback head' reaches the end
- of media data or the playback stops due
- to stop time set.*/
- OMX_AUDIO_MIDIPlayBackStatePlaying, /**< A MIDI resource is open and currently
- playing. The MIDI engine is currently
- processing MIDI events.*/
- OMX_AUDIO_MIDIPlayBackStatePlayingPartially, /**< Best-effort playback due to SP-MIDI/DLS
- resource constraints */
- OMX_AUDIO_MIDIPlayBackStatePlayingSilently, /**< Due to system resource constraints and
- SP-MIDI content constraints, there is
- no audible MIDI content during playback
- currently. The situation may change if
- resources are freed later.*/
- OMX_AUDIO_MIDIPlayBackStateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_MIDIPlayBackStateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_MIDIPlayBackStateMax = 0x7FFFFFFF
-} OMX_AUDIO_MIDIPLAYBACKSTATETYPE;
-
-
-/** MIDI status
- * @ingroup midi
- */
-typedef struct OMX_AUDIO_CONFIG_MIDISTATUSTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U16 nNumTracks; /**< Number of MIDI tracks in the file, read only field.
- NOTE: May not return a meaningful value until the entire
- file is parsed and buffered. */
- OMX_U32 nDuration; /**< The length of the currently open MIDI resource
- in milliseconds. NOTE: May not return a meaningful value
- until the entire file is parsed and buffered. */
- OMX_U32 nPosition; /**< Current Position of the MIDI resource being played
- in milliseconds */
- OMX_BOOL bVibra; /**< Does Vibra track exist? NOTE: May not return a meaningful
- value until the entire file is parsed and buffered. */
- OMX_U32 nNumMetaEvents; /**< Total number of MIDI Meta Events in the currently
- open MIDI resource. NOTE: May not return a meaningful value
- until the entire file is parsed and buffered. */
- OMX_U32 nNumActiveVoices; /**< Number of active voices in the currently playing
- MIDI resource. NOTE: May not return a meaningful value until
- the entire file is parsed and buffered. */
- OMX_AUDIO_MIDIPLAYBACKSTATETYPE eMIDIPlayBackState; /**< MIDI playback state enumeration, read only field */
-} OMX_AUDIO_CONFIG_MIDISTATUSTYPE;
-
-
-/** MIDI Meta Event structure one per Meta Event.
- * MIDI Meta Events are like audio metadata, except that they are interspersed
- * with the MIDI content throughout the file and are not localized in the header.
- * As such, it is necessary to retrieve information about these Meta Events from
- * the engine, as it encounters these Meta Events within the MIDI content.
- * For example, SMF files can have up to 14 types of MIDI Meta Events (copyright,
- * author, default tempo, etc.) scattered throughout the file.
- * @ingroup midi
- */
-typedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE{
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nIndex; /**< Index of Meta Event */
- OMX_U8 nMetaEventType; /**< Meta Event Type, 7bits (i.e. 0 - 127) */
- OMX_U32 nMetaEventSize; /**< size of the Meta Event in bytes */
- OMX_U32 nTrack; /**< track number for the meta event */
- OMX_U32 nPosition; /**< Position of the meta-event in milliseconds */
-} OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE;
-
-
-/** MIDI Meta Event Data structure - one per Meta Event.
- * @ingroup midi
- */
-typedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE{
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nIndex; /**< Index of Meta Event */
- OMX_U32 nMetaEventSize; /**< size of the Meta Event in bytes */
- OMX_U8 nData[1]; /**< array of one or more bytes of meta data
- as indicated by the nMetaEventSize field */
-} OMX_AUDIO_CONFIG__MIDIMETAEVENTDATATYPE;
-
-
-/** Audio Volume adjustment for a port */
-typedef struct OMX_AUDIO_CONFIG_VOLUMETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port index indicating which port to
- set. Select the input port to set
- just that port's volume. Select the
- output port to adjust the master
- volume. */
- OMX_BOOL bLinear; /**< Is the volume to be set in linear (0.100)
- or logarithmic scale (mB) */
- OMX_BS32 sVolume; /**< Volume linear setting in the 0..100 range, OR
- Volume logarithmic setting for this port. The values
- for volume are in mB (millibels = 1/100 dB) relative
- to a gain of 1 (e.g. the output is the same as the
- input level). Values are in mB from nMax
- (maximum volume) to nMin mB (typically negative).
- Since the volume is "voltage"
- and not a "power", it takes a setting of
- -600 mB to decrease the volume by 1/2. If
- a component cannot accurately set the
- volume to the requested value, it must
- set the volume to the closest value BELOW
- the requested value. When getting the
- volume setting, the current actual volume
- must be returned. */
-} OMX_AUDIO_CONFIG_VOLUMETYPE;
-
-
-/** Audio Volume adjustment for a channel */
-typedef struct OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port index indicating which port to
- set. Select the input port to set
- just that port's volume. Select the
- output port to adjust the master
- volume. */
- OMX_U32 nChannel; /**< channel to select from 0 to N-1,
- using OMX_ALL to apply volume settings
- to all channels */
- OMX_BOOL bLinear; /**< Is the volume to be set in linear (0.100) or
- logarithmic scale (mB) */
- OMX_BS32 sVolume; /**< Volume linear setting in the 0..100 range, OR
- Volume logarithmic setting for this port.
- The values for volume are in mB
- (millibels = 1/100 dB) relative to a gain
- of 1 (e.g. the output is the same as the
- input level). Values are in mB from nMax
- (maximum volume) to nMin mB (typically negative).
- Since the volume is "voltage"
- and not a "power", it takes a setting of
- -600 mB to decrease the volume by 1/2. If
- a component cannot accurately set the
- volume to the requested value, it must
- set the volume to the closest value BELOW
- the requested value. When getting the
- volume setting, the current actual volume
- must be returned. */
- OMX_BOOL bIsMIDI; /**< TRUE if nChannel refers to a MIDI channel,
- FALSE otherwise */
-} OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE;
-
-
-/** Audio balance setting */
-typedef struct OMX_AUDIO_CONFIG_BALANCETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port index indicating which port to
- set. Select the input port to set
- just that port's balance. Select the
- output port to adjust the master
- balance. */
- OMX_S32 nBalance; /**< balance setting for this port
- (-100 to 100, where -100 indicates
- all left, and no right */
-} OMX_AUDIO_CONFIG_BALANCETYPE;
-
-
-/** Audio Port mute */
-typedef struct OMX_AUDIO_CONFIG_MUTETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port index indicating which port to
- set. Select the input port to set
- just that port's mute. Select the
- output port to adjust the master
- mute. */
- OMX_BOOL bMute; /**< Mute setting for this port */
-} OMX_AUDIO_CONFIG_MUTETYPE;
-
-
-/** Audio Channel mute */
-typedef struct OMX_AUDIO_CONFIG_CHANNELMUTETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannel; /**< channel to select from 0 to N-1,
- using OMX_ALL to apply mute settings
- to all channels */
- OMX_BOOL bMute; /**< Mute setting for this channel */
- OMX_BOOL bIsMIDI; /**< TRUE if nChannel refers to a MIDI channel,
- FALSE otherwise */
-} OMX_AUDIO_CONFIG_CHANNELMUTETYPE;
-
-
-
-/** Enable / Disable for loudness control, which boosts bass and to a
- * smaller extent high end frequencies to compensate for hearing
- * ability at the extreme ends of the audio spectrum
- */
-typedef struct OMX_AUDIO_CONFIG_LOUDNESSTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bLoudness; /**< Enable/disable for loudness */
-} OMX_AUDIO_CONFIG_LOUDNESSTYPE;
-
-
-/** Enable / Disable for bass, which controls low frequencies
- */
-typedef struct OMX_AUDIO_CONFIG_BASSTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bEnable; /**< Enable/disable for bass control */
- OMX_S32 nBass; /**< bass setting for the port, as a
- continuous value from -100 to 100
- (0 means no change in bass level)*/
-} OMX_AUDIO_CONFIG_BASSTYPE;
-
-
-/** Enable / Disable for treble, which controls high frequencies tones
- */
-typedef struct OMX_AUDIO_CONFIG_TREBLETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bEnable; /**< Enable/disable for treble control */
- OMX_S32 nTreble; /**< treble setting for the port, as a
- continuous value from -100 to 100
- (0 means no change in treble level) */
-} OMX_AUDIO_CONFIG_TREBLETYPE;
-
-
-/** An equalizer is typically used for two reasons: to compensate for an
- * sub-optimal frequency response of a system to make it sound more natural
- * or to create intentionally some unnatural coloring to the sound to create
- * an effect.
- * @ingroup effects
- */
-typedef struct OMX_AUDIO_CONFIG_EQUALIZERTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bEnable; /**< Enable/disable for equalizer */
- OMX_BU32 sBandIndex; /**< Band number to be set. Upper Limit is
- N-1, where N is the number of bands, lower limit is 0 */
- OMX_BU32 sCenterFreq; /**< Center frequecies in Hz. This is a
- read only element and is used to determine
- the lower, center and upper frequency of
- this band. */
- OMX_BS32 sBandLevel; /**< band level in millibels */
-} OMX_AUDIO_CONFIG_EQUALIZERTYPE;
-
-
-/** Stereo widening mode type
- * @ingroup effects
- */
-typedef enum OMX_AUDIO_STEREOWIDENINGTYPE {
- OMX_AUDIO_StereoWideningHeadphones, /**< Stereo widening for loudspeakers */
- OMX_AUDIO_StereoWideningLoudspeakers, /**< Stereo widening for closely spaced loudspeakers */
- OMX_AUDIO_StereoWideningKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_StereoWideningVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_StereoWideningMax = 0x7FFFFFFF
-} OMX_AUDIO_STEREOWIDENINGTYPE;
-
-
-/** Control for stereo widening, which is a special 2-channel
- * case of the audio virtualizer effect. For example, for 5.1-channel
- * output, it translates to virtual surround sound.
- * @ingroup effects
- */
-typedef struct OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bEnable; /**< Enable/disable for stereo widening control */
- OMX_AUDIO_STEREOWIDENINGTYPE eWideningType; /**< Stereo widening algorithm type */
- OMX_U32 nStereoWidening; /**< stereo widening setting for the port,
- as a continuous value from 0 to 100 */
-} OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE;
-
-
-/** The chorus effect (or ``choralizer'') is any signal processor which makes
- * one sound source (such as a voice) sound like many such sources singing
- * (or playing) in unison. Since performance in unison is never exact, chorus
- * effects simulate this by making independently modified copies of the input
- * signal. Modifications may include (1) delay, (2) frequency shift, and
- * (3) amplitude modulation.
- * @ingroup effects
- */
-typedef struct OMX_AUDIO_CONFIG_CHORUSTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bEnable; /**< Enable/disable for chorus */
- OMX_BU32 sDelay; /**< average delay in milliseconds */
- OMX_BU32 sModulationRate; /**< rate of modulation in millihertz */
- OMX_U32 nModulationDepth; /**< depth of modulation as a percentage of
- delay (i.e. 0 to 100) */
- OMX_BU32 nFeedback; /**< Feedback from chorus output to input in percentage */
-} OMX_AUDIO_CONFIG_CHORUSTYPE;
-
-
-/** Reverberation is part of the reflected sound that follows the early
- * reflections. In a typical room, this consists of a dense succession of
- * echoes whose energy decays exponentially. The reverberation effect structure
- * as defined here includes both (early) reflections as well as (late) reverberations.
- * @ingroup effects
- */
-typedef struct OMX_AUDIO_CONFIG_REVERBERATIONTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bEnable; /**< Enable/disable for reverberation control */
- OMX_BS32 sRoomLevel; /**< Intensity level for the whole room effect
- (i.e. both early reflections and late
- reverberation) in millibels */
- OMX_BS32 sRoomHighFreqLevel; /**< Attenuation at high frequencies
- relative to the intensity at low
- frequencies in millibels */
- OMX_BS32 sReflectionsLevel; /**< Intensity level of early reflections
- (relative to room value), in millibels */
- OMX_BU32 sReflectionsDelay; /**< Delay time of the first reflection relative
- to the direct path, in milliseconds */
- OMX_BS32 sReverbLevel; /**< Intensity level of late reverberation
- relative to room level, in millibels */
- OMX_BU32 sReverbDelay; /**< Time delay from the first early reflection
- to the beginning of the late reverberation
- section, in milliseconds */
- OMX_BU32 sDecayTime; /**< Late reverberation decay time at low
- frequencies, in milliseconds */
- OMX_BU32 nDecayHighFreqRatio; /**< Ratio of high frequency decay time relative
- to low frequency decay time in percent */
- OMX_U32 nDensity; /**< Modal density in the late reverberation decay,
- in percent (i.e. 0 - 100) */
- OMX_U32 nDiffusion; /**< Echo density in the late reverberation decay,
- in percent (i.e. 0 - 100) */
- OMX_BU32 sReferenceHighFreq; /**< Reference high frequency in Hertz. This is
- the frequency used as the reference for all
- the high-frequency settings above */
-
-} OMX_AUDIO_CONFIG_REVERBERATIONTYPE;
-
-
-/** Possible settings for the Echo Cancelation structure to use
- * @ingroup effects
- */
-typedef enum OMX_AUDIO_ECHOCANTYPE {
- OMX_AUDIO_EchoCanOff = 0, /**< Echo Cancellation is disabled */
- OMX_AUDIO_EchoCanNormal, /**< Echo Cancellation normal operation -
- echo from plastics and face */
- OMX_AUDIO_EchoCanHFree, /**< Echo Cancellation optimized for
- Hands Free operation */
- OMX_AUDIO_EchoCanCarKit, /**< Echo Cancellation optimized for
- Car Kit (longer echo) */
- OMX_AUDIO_EchoCanKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_EchoCanVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_EchoCanMax = 0x7FFFFFFF
-} OMX_AUDIO_ECHOCANTYPE;
-
-
-/** Enable / Disable for echo cancelation, which removes undesired echo's
- * from the audio
- * @ingroup effects
- */
-typedef struct OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_AUDIO_ECHOCANTYPE eEchoCancelation; /**< Echo cancelation settings */
-} OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE;
-
-
-/** Enable / Disable for noise reduction, which undesired noise from
- * the audio
- * @ingroup effects
- */
-typedef struct OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bNoiseReduction; /**< Enable/disable for noise reduction */
-} OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE;
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
-
diff --git a/include/media/stagefright/openmax/OMX_Component.h b/include/media/stagefright/openmax/OMX_Component.h
deleted file mode 100644
index b5b784ea..0000000
--- a/include/media/stagefright/openmax/OMX_Component.h
+++ /dev/null
@@ -1,596 +0,0 @@
-/* ------------------------------------------------------------------
- * Copyright (C) 1998-2009 PacketVideo
- *
- * 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.
- * -------------------------------------------------------------------
- */
-/*
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/** OMX_Component.h - OpenMax IL version 1.1.2
- * The OMX_Component header file contains the definitions used to define
- * the public interface of a component. This header file is intended to
- * be used by both the application and the component.
- */
-
-#ifndef OMX_Component_h
-#define OMX_Component_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-
-/* Each OMX header must include all required header files to allow the
- * header to compile without errors. The includes below are required
- * for this header file to compile successfully
- */
-
-#include <OMX_Audio.h>
-#include <OMX_Video.h>
-#include <OMX_Image.h>
-#include <OMX_Other.h>
-
-/** @ingroup comp */
-typedef enum OMX_PORTDOMAINTYPE {
- OMX_PortDomainAudio,
- OMX_PortDomainVideo,
- OMX_PortDomainImage,
- OMX_PortDomainOther,
- OMX_PortDomainKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_PortDomainVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_PortDomainMax = 0x7ffffff
-} OMX_PORTDOMAINTYPE;
-
-/** @ingroup comp */
-typedef struct OMX_PARAM_PORTDEFINITIONTYPE {
- OMX_U32 nSize; /**< Size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port number the structure applies to */
- OMX_DIRTYPE eDir; /**< Direction (input or output) of this port */
- OMX_U32 nBufferCountActual; /**< The actual number of buffers allocated on this port */
- OMX_U32 nBufferCountMin; /**< The minimum number of buffers this port requires */
- OMX_U32 nBufferSize; /**< Size, in bytes, for buffers to be used for this channel */
- OMX_BOOL bEnabled; /**< Ports default to enabled and are enabled/disabled by
- OMX_CommandPortEnable/OMX_CommandPortDisable.
- When disabled a port is unpopulated. A disabled port
- is not populated with buffers on a transition to IDLE. */
- OMX_BOOL bPopulated; /**< Port is populated with all of its buffers as indicated by
- nBufferCountActual. A disabled port is always unpopulated.
- An enabled port is populated on a transition to OMX_StateIdle
- and unpopulated on a transition to loaded. */
- OMX_PORTDOMAINTYPE eDomain; /**< Domain of the port. Determines the contents of metadata below. */
- union {
- OMX_AUDIO_PORTDEFINITIONTYPE audio;
- OMX_VIDEO_PORTDEFINITIONTYPE video;
- OMX_IMAGE_PORTDEFINITIONTYPE image;
- OMX_OTHER_PORTDEFINITIONTYPE other;
- } format;
- OMX_BOOL bBuffersContiguous;
- OMX_U32 nBufferAlignment;
-} OMX_PARAM_PORTDEFINITIONTYPE;
-
-/** @ingroup comp */
-typedef struct OMX_PARAM_U32TYPE {
- OMX_U32 nSize; /**< Size of this structure, in Bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nU32; /**< U32 value */
-} OMX_PARAM_U32TYPE;
-
-/** @ingroup rpm */
-typedef enum OMX_SUSPENSIONPOLICYTYPE {
- OMX_SuspensionDisabled, /**< No suspension; v1.0 behavior */
- OMX_SuspensionEnabled, /**< Suspension allowed */
- OMX_SuspensionPolicyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_SuspensionPolicyStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_SuspensionPolicyMax = 0x7fffffff
-} OMX_SUSPENSIONPOLICYTYPE;
-
-/** @ingroup rpm */
-typedef struct OMX_PARAM_SUSPENSIONPOLICYTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_SUSPENSIONPOLICYTYPE ePolicy;
-} OMX_PARAM_SUSPENSIONPOLICYTYPE;
-
-/** @ingroup rpm */
-typedef enum OMX_SUSPENSIONTYPE {
- OMX_NotSuspended, /**< component is not suspended */
- OMX_Suspended, /**< component is suspended */
- OMX_SuspensionKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_SuspensionVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_SuspendMax = 0x7FFFFFFF
-} OMX_SUSPENSIONTYPE;
-
-/** @ingroup rpm */
-typedef struct OMX_PARAM_SUSPENSIONTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_SUSPENSIONTYPE eType;
-} OMX_PARAM_SUSPENSIONTYPE ;
-
-typedef struct OMX_CONFIG_BOOLEANTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_BOOL bEnabled;
-} OMX_CONFIG_BOOLEANTYPE;
-
-/* Parameter specifying the content uri to use. */
-/** @ingroup cp */
-typedef struct OMX_PARAM_CONTENTURITYPE
-{
- OMX_U32 nSize; /**< size of the structure in bytes, including
- actual URI name */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U8 contentURI[1]; /**< The URI name */
-} OMX_PARAM_CONTENTURITYPE;
-
-/* Parameter specifying the pipe to use. */
-/** @ingroup cp */
-typedef struct OMX_PARAM_CONTENTPIPETYPE
-{
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_HANDLETYPE hPipe; /**< The pipe handle*/
-} OMX_PARAM_CONTENTPIPETYPE;
-
-/** @ingroup rpm */
-typedef struct OMX_RESOURCECONCEALMENTTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_BOOL bResourceConcealmentForbidden; /**< disallow the use of resource concealment
- methods (like degrading algorithm quality to
- lower resource consumption or functional bypass)
- on a component as a resolution to resource conflicts. */
-} OMX_RESOURCECONCEALMENTTYPE;
-
-
-/** @ingroup metadata */
-typedef enum OMX_METADATACHARSETTYPE {
- OMX_MetadataCharsetUnknown = 0,
- OMX_MetadataCharsetASCII,
- OMX_MetadataCharsetBinary,
- OMX_MetadataCharsetCodePage1252,
- OMX_MetadataCharsetUTF8,
- OMX_MetadataCharsetJavaConformantUTF8,
- OMX_MetadataCharsetUTF7,
- OMX_MetadataCharsetImapUTF7,
- OMX_MetadataCharsetUTF16LE,
- OMX_MetadataCharsetUTF16BE,
- OMX_MetadataCharsetGB12345,
- OMX_MetadataCharsetHZGB2312,
- OMX_MetadataCharsetGB2312,
- OMX_MetadataCharsetGB18030,
- OMX_MetadataCharsetGBK,
- OMX_MetadataCharsetBig5,
- OMX_MetadataCharsetISO88591,
- OMX_MetadataCharsetISO88592,
- OMX_MetadataCharsetISO88593,
- OMX_MetadataCharsetISO88594,
- OMX_MetadataCharsetISO88595,
- OMX_MetadataCharsetISO88596,
- OMX_MetadataCharsetISO88597,
- OMX_MetadataCharsetISO88598,
- OMX_MetadataCharsetISO88599,
- OMX_MetadataCharsetISO885910,
- OMX_MetadataCharsetISO885913,
- OMX_MetadataCharsetISO885914,
- OMX_MetadataCharsetISO885915,
- OMX_MetadataCharsetShiftJIS,
- OMX_MetadataCharsetISO2022JP,
- OMX_MetadataCharsetISO2022JP1,
- OMX_MetadataCharsetISOEUCJP,
- OMX_MetadataCharsetSMS7Bit,
- OMX_MetadataCharsetKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_MetadataCharsetVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_MetadataCharsetTypeMax= 0x7FFFFFFF
-} OMX_METADATACHARSETTYPE;
-
-/** @ingroup metadata */
-typedef enum OMX_METADATASCOPETYPE
-{
- OMX_MetadataScopeAllLevels,
- OMX_MetadataScopeTopLevel,
- OMX_MetadataScopePortLevel,
- OMX_MetadataScopeNodeLevel,
- OMX_MetadataScopeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_MetadataScopeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_MetadataScopeTypeMax = 0x7fffffff
-} OMX_METADATASCOPETYPE;
-
-/** @ingroup metadata */
-typedef enum OMX_METADATASEARCHMODETYPE
-{
- OMX_MetadataSearchValueSizeByIndex,
- OMX_MetadataSearchItemByIndex,
- OMX_MetadataSearchNextItemByKey,
- OMX_MetadataSearchKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_MetadataSearchVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_MetadataSearchTypeMax = 0x7fffffff
-} OMX_METADATASEARCHMODETYPE;
-/** @ingroup metadata */
-typedef struct OMX_CONFIG_METADATAITEMCOUNTTYPE
-{
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_METADATASCOPETYPE eScopeMode;
- OMX_U32 nScopeSpecifier;
- OMX_U32 nMetadataItemCount;
-} OMX_CONFIG_METADATAITEMCOUNTTYPE;
-
-/** @ingroup metadata */
-typedef struct OMX_CONFIG_METADATAITEMTYPE
-{
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_METADATASCOPETYPE eScopeMode;
- OMX_U32 nScopeSpecifier;
- OMX_U32 nMetadataItemIndex;
- OMX_METADATASEARCHMODETYPE eSearchMode;
- OMX_METADATACHARSETTYPE eKeyCharset;
- OMX_U8 nKeySizeUsed;
- OMX_U8 nKey[128];
- OMX_METADATACHARSETTYPE eValueCharset;
- OMX_STRING sLanguageCountry;
- OMX_U32 nValueMaxSize;
- OMX_U32 nValueSizeUsed;
- OMX_U8 nValue[1];
-} OMX_CONFIG_METADATAITEMTYPE;
-
-/* @ingroup metadata */
-typedef struct OMX_CONFIG_CONTAINERNODECOUNTTYPE
-{
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_BOOL bAllKeys;
- OMX_U32 nParentNodeID;
- OMX_U32 nNumNodes;
-} OMX_CONFIG_CONTAINERNODECOUNTTYPE;
-
-/** @ingroup metadata */
-typedef struct OMX_CONFIG_CONTAINERNODEIDTYPE
-{
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_BOOL bAllKeys;
- OMX_U32 nParentNodeID;
- OMX_U32 nNodeIndex;
- OMX_U32 nNodeID;
- OMX_STRING cNodeName;
- OMX_BOOL bIsLeafType;
-} OMX_CONFIG_CONTAINERNODEIDTYPE;
-
-/** @ingroup metadata */
-typedef struct OMX_PARAM_METADATAFILTERTYPE
-{
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_BOOL bAllKeys; /* if true then this structure refers to all keys and
- * the three key fields below are ignored */
- OMX_METADATACHARSETTYPE eKeyCharset;
- OMX_U32 nKeySizeUsed;
- OMX_U8 nKey [128];
- OMX_U32 nLanguageCountrySizeUsed;
- OMX_U8 nLanguageCountry[128];
- OMX_BOOL bEnabled; /* if true then key is part of filter (e.g.
- * retained for query later). If false then
- * key is not part of filter */
-} OMX_PARAM_METADATAFILTERTYPE;
-
-/** The OMX_HANDLETYPE structure defines the component handle. The component
- * handle is used to access all of the component's public methods and also
- * contains pointers to the component's private data area. The component
- * handle is initialized by the OMX core (with help from the component)
- * during the process of loading the component. After the component is
- * successfully loaded, the application can safely access any of the
- * component's public functions (although some may return an error because
- * the state is inappropriate for the access).
- *
- * @ingroup comp
- */
-typedef struct OMX_COMPONENTTYPE
-{
- /** The size of this structure, in bytes. It is the responsibility
- of the allocator of this structure to fill in this value. Since
- this structure is allocated by the GetHandle function, this
- function will fill in this value. */
- OMX_U32 nSize;
-
- /** nVersion is the version of the OMX specification that the structure
- is built against. It is the responsibility of the creator of this
- structure to initialize this value and every user of this structure
- should verify that it knows how to use the exact version of
- this structure found herein. */
- OMX_VERSIONTYPE nVersion;
-
- /** pComponentPrivate is a pointer to the component private data area.
- This member is allocated and initialized by the component when the
- component is first loaded. The application should not access this
- data area. */
- OMX_PTR pComponentPrivate;
-
- /** pApplicationPrivate is a pointer that is a parameter to the
- OMX_GetHandle method, and contains an application private value
- provided by the IL client. This application private data is
- returned to the IL Client by OMX in all callbacks */
- OMX_PTR pApplicationPrivate;
-
- /** refer to OMX_GetComponentVersion in OMX_core.h or the OMX IL
- specification for details on the GetComponentVersion method.
- */
- OMX_ERRORTYPE (*GetComponentVersion)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_OUT OMX_STRING pComponentName,
- OMX_OUT OMX_VERSIONTYPE* pComponentVersion,
- OMX_OUT OMX_VERSIONTYPE* pSpecVersion,
- OMX_OUT OMX_UUIDTYPE* pComponentUUID);
-
- /** refer to OMX_SendCommand in OMX_core.h or the OMX IL
- specification for details on the SendCommand method.
- */
- OMX_ERRORTYPE (*SendCommand)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_COMMANDTYPE Cmd,
- OMX_IN OMX_U32 nParam1,
- OMX_IN OMX_PTR pCmdData);
-
- /** refer to OMX_GetParameter in OMX_core.h or the OMX IL
- specification for details on the GetParameter method.
- */
- OMX_ERRORTYPE (*GetParameter)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nParamIndex,
- OMX_INOUT OMX_PTR pComponentParameterStructure);
-
-
- /** refer to OMX_SetParameter in OMX_core.h or the OMX IL
- specification for details on the SetParameter method.
- */
- OMX_ERRORTYPE (*SetParameter)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_IN OMX_PTR pComponentParameterStructure);
-
-
- /** refer to OMX_GetConfig in OMX_core.h or the OMX IL
- specification for details on the GetConfig method.
- */
- OMX_ERRORTYPE (*GetConfig)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_INOUT OMX_PTR pComponentConfigStructure);
-
-
- /** refer to OMX_SetConfig in OMX_core.h or the OMX IL
- specification for details on the SetConfig method.
- */
- OMX_ERRORTYPE (*SetConfig)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_IN OMX_PTR pComponentConfigStructure);
-
-
- /** refer to OMX_GetExtensionIndex in OMX_core.h or the OMX IL
- specification for details on the GetExtensionIndex method.
- */
- OMX_ERRORTYPE (*GetExtensionIndex)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_STRING cParameterName,
- OMX_OUT OMX_INDEXTYPE* pIndexType);
-
-
- /** refer to OMX_GetState in OMX_core.h or the OMX IL
- specification for details on the GetState method.
- */
- OMX_ERRORTYPE (*GetState)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_OUT OMX_STATETYPE* pState);
-
-
- /** The ComponentTunnelRequest method will interact with another OMX
- component to determine if tunneling is possible and to setup the
- tunneling. The return codes for this method can be used to
- determine if tunneling is not possible, or if tunneling is not
- supported.
-
- Base profile components (i.e. non-interop) do not support this
- method and should return OMX_ErrorNotImplemented
-
- The interop profile component MUST support tunneling to another
- interop profile component with a compatible port parameters.
- A component may also support proprietary communication.
-
- If proprietary communication is supported the negotiation of
- proprietary communication is done outside of OMX in a vendor
- specific way. It is only required that the proper result be
- returned and the details of how the setup is done is left
- to the component implementation.
-
- When this method is invoked when nPort in an output port, the
- component will:
- 1. Populate the pTunnelSetup structure with the output port's
- requirements and constraints for the tunnel.
-
- When this method is invoked when nPort in an input port, the
- component will:
- 1. Query the necessary parameters from the output port to
- determine if the ports are compatible for tunneling
- 2. If the ports are compatible, the component should store
- the tunnel step provided by the output port
- 3. Determine which port (either input or output) is the buffer
- supplier, and call OMX_SetParameter on the output port to
- indicate this selection.
-
- The component will return from this call within 5 msec.
-
- @param [in] hComp
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle method.
- @param [in] nPort
- nPort is used to select the port on the component to be used
- for tunneling.
- @param [in] hTunneledComp
- Handle of the component to tunnel with. This is the component
- handle returned by the call to the OMX_GetHandle method. When
- this parameter is 0x0 the component should setup the port for
- communication with the application / IL Client.
- @param [in] nPortOutput
- nPortOutput is used indicate the port the component should
- tunnel with.
- @param [in] pTunnelSetup
- Pointer to the tunnel setup structure. When nPort is an output port
- the component should populate the fields of this structure. When
- When nPort is an input port the component should review the setup
- provided by the component with the output port.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup tun
- */
-
- OMX_ERRORTYPE (*ComponentTunnelRequest)(
- OMX_IN OMX_HANDLETYPE hComp,
- OMX_IN OMX_U32 nPort,
- OMX_IN OMX_HANDLETYPE hTunneledComp,
- OMX_IN OMX_U32 nTunneledPort,
- OMX_INOUT OMX_TUNNELSETUPTYPE* pTunnelSetup);
-
- /** refer to OMX_UseBuffer in OMX_core.h or the OMX IL
- specification for details on the UseBuffer method.
- @ingroup buf
- */
- OMX_ERRORTYPE (*UseBuffer)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_PTR pAppPrivate,
- OMX_IN OMX_U32 nSizeBytes,
- OMX_IN OMX_U8* pBuffer);
-
- /** refer to OMX_AllocateBuffer in OMX_core.h or the OMX IL
- specification for details on the AllocateBuffer method.
- @ingroup buf
- */
- OMX_ERRORTYPE (*AllocateBuffer)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_INOUT OMX_BUFFERHEADERTYPE** ppBuffer,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_PTR pAppPrivate,
- OMX_IN OMX_U32 nSizeBytes);
-
- /** refer to OMX_FreeBuffer in OMX_core.h or the OMX IL
- specification for details on the FreeBuffer method.
- @ingroup buf
- */
- OMX_ERRORTYPE (*FreeBuffer)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
-
- /** refer to OMX_EmptyThisBuffer in OMX_core.h or the OMX IL
- specification for details on the EmptyThisBuffer method.
- @ingroup buf
- */
- OMX_ERRORTYPE (*EmptyThisBuffer)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
-
- /** refer to OMX_FillThisBuffer in OMX_core.h or the OMX IL
- specification for details on the FillThisBuffer method.
- @ingroup buf
- */
- OMX_ERRORTYPE (*FillThisBuffer)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
-
- /** The SetCallbacks method is used by the core to specify the callback
- structure from the application to the component. This is a blocking
- call. The component will return from this call within 5 msec.
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the GetHandle function.
- @param [in] pCallbacks
- pointer to an OMX_CALLBACKTYPE structure used to provide the
- callback information to the component
- @param [in] pAppData
- pointer to an application defined value. It is anticipated that
- the application will pass a pointer to a data structure or a "this
- pointer" in this area to allow the callback (in the application)
- to determine the context of the call
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- */
- OMX_ERRORTYPE (*SetCallbacks)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_CALLBACKTYPE* pCallbacks,
- OMX_IN OMX_PTR pAppData);
-
- /** ComponentDeInit method is used to deinitialize the component
- providing a means to free any resources allocated at component
- initialization. NOTE: After this call the component handle is
- not valid for further use.
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the GetHandle function.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- */
- OMX_ERRORTYPE (*ComponentDeInit)(
- OMX_IN OMX_HANDLETYPE hComponent);
-
- /** @ingroup buf */
- OMX_ERRORTYPE (*UseEGLImage)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_PTR pAppPrivate,
- OMX_IN void* eglImage);
-
- OMX_ERRORTYPE (*ComponentRoleEnum)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_OUT OMX_U8 *cRole,
- OMX_IN OMX_U32 nIndex);
-
-} OMX_COMPONENTTYPE;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
diff --git a/include/media/stagefright/openmax/OMX_ContentPipe.h b/include/media/stagefright/openmax/OMX_ContentPipe.h
deleted file mode 100644
index ee9e4db..0000000
--- a/include/media/stagefright/openmax/OMX_ContentPipe.h
+++ /dev/null
@@ -1,212 +0,0 @@
-/* ------------------------------------------------------------------
- * Copyright (C) 1998-2009 PacketVideo
- *
- * 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.
- * -------------------------------------------------------------------
- */
-/*
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/** OMX_ContentPipe.h - OpenMax IL version 1.1.2
- * The OMX_ContentPipe header file contains the definitions used to define
- * the public interface for content piples. This header file is intended to
- * be used by the component.
- */
-
-#ifndef OMX_CONTENTPIPE_H
-#define OMX_CONTENTPIPE_H
-
-#ifndef KD_EACCES
-/* OpenKODE error codes. CPResult values may be zero (indicating success
- or one of the following values) */
-#define KD_EACCES (1)
-#define KD_EADDRINUSE (2)
-#define KD_EAGAIN (5)
-#define KD_EBADF (7)
-#define KD_EBUSY (8)
-#define KD_ECONNREFUSED (9)
-#define KD_ECONNRESET (10)
-#define KD_EDEADLK (11)
-#define KD_EDESTADDRREQ (12)
-#define KD_ERANGE (35)
-#define KD_EEXIST (13)
-#define KD_EFBIG (14)
-#define KD_EHOSTUNREACH (15)
-#define KD_EINVAL (17)
-#define KD_EIO (18)
-#define KD_EISCONN (20)
-#define KD_EISDIR (21)
-#define KD_EMFILE (22)
-#define KD_ENAMETOOLONG (23)
-#define KD_ENOENT (24)
-#define KD_ENOMEM (25)
-#define KD_ENOSPC (26)
-#define KD_ENOSYS (27)
-#define KD_ENOTCONN (28)
-#define KD_EPERM (33)
-#define KD_ETIMEDOUT (36)
-#define KD_EILSEQ (19)
-#endif
-
-/** Map types from OMX standard types only here so interface is as generic as possible. */
-typedef OMX_U32 CPresult;
-typedef char * CPstring;
-typedef void * CPhandle;
-typedef OMX_U32 CPuint;
-typedef OMX_S32 CPint;
-typedef char CPbyte;
-typedef OMX_BOOL CPbool;
-
-/** enumeration of origin types used in the CP_PIPETYPE's Seek function
- * @ingroup cp
- */
-typedef enum CP_ORIGINTYPE {
- CP_OriginBegin,
- CP_OriginCur,
- CP_OriginEnd,
- CP_OriginKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- CP_OriginVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- CP_OriginMax = 0X7FFFFFFF
-} CP_ORIGINTYPE;
-
-/** enumeration of contact access types used in the CP_PIPETYPE's Open function
- * @ingroup cp
- */
-typedef enum CP_ACCESSTYPE {
- CP_AccessRead,
- CP_AccessWrite,
- CP_AccessReadWrite ,
- CP_AccessKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- CP_AccessVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- CP_AccessMax = 0X7FFFFFFF
-} CP_ACCESSTYPE;
-
-/** enumeration of results returned by the CP_PIPETYPE's CheckAvailableBytes function
- * @ingroup cp
- */
-typedef enum CP_CHECKBYTESRESULTTYPE
-{
- CP_CheckBytesOk, /**< There are at least the request number
- of bytes available */
- CP_CheckBytesNotReady, /**< The pipe is still retrieving bytes
- and presently lacks sufficient bytes.
- Client will be called when they are
- sufficient bytes are available. */
- CP_CheckBytesInsufficientBytes , /**< The pipe has retrieved all bytes
- but those available are less than those
- requested */
- CP_CheckBytesAtEndOfStream, /**< The pipe has reached the end of stream
- and no more bytes are available. */
- CP_CheckBytesOutOfBuffers, /**< All read/write buffers are currently in use. */
- CP_CheckBytesKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- CP_CheckBytesVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- CP_CheckBytesMax = 0X7FFFFFFF
-} CP_CHECKBYTESRESULTTYPE;
-
-/** enumeration of content pipe events sent to the client callback.
- * @ingroup cp
- */
-typedef enum CP_EVENTTYPE{
- CP_BytesAvailable, /** bytes requested in a CheckAvailableBytes call are now available*/
- CP_Overflow, /** enumeration of content pipe events sent to the client callback*/
- CP_PipeDisconnected , /** enumeration of content pipe events sent to the client callback*/
- CP_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- CP_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- CP_EventMax = 0X7FFFFFFF
-} CP_EVENTTYPE;
-
-/** content pipe definition
- * @ingroup cp
- */
-typedef struct CP_PIPETYPE
-{
- /** Open a content stream for reading or writing. */
- CPresult (*Open)( CPhandle* hContent, CPstring szURI, CP_ACCESSTYPE eAccess );
-
- /** Close a content stream. */
- CPresult (*Close)( CPhandle hContent );
-
- /** Create a content source and open it for writing. */
- CPresult (*Create)( CPhandle *hContent, CPstring szURI );
-
- /** Check the that specified number of bytes are available for reading or writing (depending on access type).*/
- CPresult (*CheckAvailableBytes)( CPhandle hContent, CPuint nBytesRequested, CP_CHECKBYTESRESULTTYPE *eResult );
-
- /** Seek to certain position in the content relative to the specified origin. */
- CPresult (*SetPosition)( CPhandle hContent, CPint nOffset, CP_ORIGINTYPE eOrigin);
-
- /** Retrieve the current position relative to the start of the content. */
- CPresult (*GetPosition)( CPhandle hContent, CPuint *pPosition);
-
- /** Retrieve data of the specified size from the content stream (advance content pointer by size of data).
- Note: pipe client provides pointer. This function is appropriate for small high frequency reads. */
- CPresult (*Read)( CPhandle hContent, CPbyte *pData, CPuint nSize);
-
- /** Retrieve a buffer allocated by the pipe that contains the requested number of bytes.
- Buffer contains the next block of bytes, as specified by nSize, of the content. nSize also
- returns the size of the block actually read. Content pointer advances the by the returned size.
- Note: pipe provides pointer. This function is appropriate for large reads. The client must call
- ReleaseReadBuffer when done with buffer.
-
- In some cases the requested block may not reside in contiguous memory within the
- pipe implementation. For instance if the pipe leverages a circular buffer then the requested
- block may straddle the boundary of the circular buffer. By default a pipe implementation
- performs a copy in this case to provide the block to the pipe client in one contiguous buffer.
- If, however, the client sets bForbidCopy, then the pipe returns only those bytes preceding the memory
- boundary. Here the client may retrieve the data in segments over successive calls. */
- CPresult (*ReadBuffer)( CPhandle hContent, CPbyte **ppBuffer, CPuint *nSize, CPbool bForbidCopy);
-
- /** Release a buffer obtained by ReadBuffer back to the pipe. */
- CPresult (*ReleaseReadBuffer)(CPhandle hContent, CPbyte *pBuffer);
-
- /** Write data of the specified size to the content (advance content pointer by size of data).
- Note: pipe client provides pointer. This function is appropriate for small high frequency writes. */
- CPresult (*Write)( CPhandle hContent, CPbyte *data, CPuint nSize);
-
- /** Retrieve a buffer allocated by the pipe used to write data to the content.
- Client will fill buffer with output data. Note: pipe provides pointer. This function is appropriate
- for large writes. The client must call WriteBuffer when done it has filled the buffer with data.*/
- CPresult (*GetWriteBuffer)( CPhandle hContent, CPbyte **ppBuffer, CPuint nSize);
-
- /** Deliver a buffer obtained via GetWriteBuffer to the pipe. Pipe will write the
- the contents of the buffer to content and advance content pointer by the size of the buffer */
- CPresult (*WriteBuffer)( CPhandle hContent, CPbyte *pBuffer, CPuint nFilledSize);
-
- /** Register a per-handle client callback with the content pipe. */
- CPresult (*RegisterCallback)( CPhandle hContent, CPresult (*ClientCallback)(CP_EVENTTYPE eEvent, CPuint iParam));
-
-} CP_PIPETYPE;
-
-#endif
-
diff --git a/include/media/stagefright/openmax/OMX_Core.h b/include/media/stagefright/openmax/OMX_Core.h
deleted file mode 100644
index 9fb0f6f..0000000
--- a/include/media/stagefright/openmax/OMX_Core.h
+++ /dev/null
@@ -1,1448 +0,0 @@
-/* ------------------------------------------------------------------
- * Copyright (C) 1998-2009 PacketVideo
- *
- * 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.
- * -------------------------------------------------------------------
- */
-/*
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/** OMX_Core.h - OpenMax IL version 1.1.2
- * The OMX_Core header file contains the definitions used by both the
- * application and the component to access common items.
- */
-
-#ifndef OMX_Core_h
-#define OMX_Core_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/* Each OMX header shall include all required header files to allow the
- * header to compile without errors. The includes below are required
- * for this header file to compile successfully
- */
-
-#include <OMX_Index.h>
-
-
-/** The OMX_COMMANDTYPE enumeration is used to specify the action in the
- * OMX_SendCommand macro.
- * @ingroup core
- */
-typedef enum OMX_COMMANDTYPE
-{
- OMX_CommandStateSet, /**< Change the component state */
- OMX_CommandFlush, /**< Flush the data queue(s) of a component */
- OMX_CommandPortDisable, /**< Disable a port on a component. */
- OMX_CommandPortEnable, /**< Enable a port on a component. */
- OMX_CommandMarkBuffer, /**< Mark a component/buffer for observation */
- OMX_CommandKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_CommandVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_CommandMax = 0X7FFFFFFF
-} OMX_COMMANDTYPE;
-
-
-
-/** The OMX_STATETYPE enumeration is used to indicate or change the component
- * state. This enumeration reflects the current state of the component when
- * used with the OMX_GetState macro or becomes the parameter in a state change
- * command when used with the OMX_SendCommand macro.
- *
- * The component will be in the Loaded state after the component is initially
- * loaded into memory. In the Loaded state, the component is not allowed to
- * allocate or hold resources other than to build it's internal parameter
- * and configuration tables. The application will send one or more
- * SetParameters/GetParameters and SetConfig/GetConfig commands to the
- * component and the component will record each of these parameter and
- * configuration changes for use later. When the application sends the
- * Idle command, the component will acquire the resources needed for the
- * specified configuration and will transition to the idle state if the
- * allocation is successful. If the component cannot successfully
- * transition to the idle state for any reason, the state of the component
- * shall be fully rolled back to the Loaded state (e.g. all allocated
- * resources shall be released). When the component receives the command
- * to go to the Executing state, it shall begin processing buffers by
- * sending all input buffers it holds to the application. While
- * the component is in the Idle state, the application may also send the
- * Pause command. If the component receives the pause command while in the
- * Idle state, the component shall send all input buffers it holds to the
- * application, but shall not begin processing buffers. This will allow the
- * application to prefill buffers.
- *
- * @ingroup comp
- */
-
-typedef enum OMX_STATETYPE
-{
- OMX_StateInvalid, /**< component has detected that it's internal data
- structures are corrupted to the point that
- it cannot determine it's state properly */
- OMX_StateLoaded, /**< component has been loaded but has not completed
- initialization. The OMX_SetParameter macro
- and the OMX_GetParameter macro are the only
- valid macros allowed to be sent to the
- component in this state. */
- OMX_StateIdle, /**< component initialization has been completed
- successfully and the component is ready to
- to start. */
- OMX_StateExecuting, /**< component has accepted the start command and
- is processing data (if data is available) */
- OMX_StatePause, /**< component has received pause command */
- OMX_StateWaitForResources, /**< component is waiting for resources, either after
- preemption or before it gets the resources requested.
- See specification for complete details. */
- OMX_StateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_StateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_StateMax = 0X7FFFFFFF
-} OMX_STATETYPE;
-
-/** The OMX_ERRORTYPE enumeration defines the standard OMX Errors. These
- * errors should cover most of the common failure cases. However,
- * vendors are free to add additional error messages of their own as
- * long as they follow these rules:
- * 1. Vendor error messages shall be in the range of 0x90000000 to
- * 0x9000FFFF.
- * 2. Vendor error messages shall be defined in a header file provided
- * with the component. No error messages are allowed that are
- * not defined.
- */
-typedef enum OMX_ERRORTYPE
-{
- OMX_ErrorNone = 0,
-
- /** There were insufficient resources to perform the requested operation */
- OMX_ErrorInsufficientResources = (OMX_S32) 0x80001000,
-
- /** There was an error, but the cause of the error could not be determined */
- OMX_ErrorUndefined = (OMX_S32) 0x80001001,
-
- /** The component name string was not valid */
- OMX_ErrorInvalidComponentName = (OMX_S32) 0x80001002,
-
- /** No component with the specified name string was found */
- OMX_ErrorComponentNotFound = (OMX_S32) 0x80001003,
-
- /** The component specified did not have a "OMX_ComponentInit" or
- "OMX_ComponentDeInit entry point */
- OMX_ErrorInvalidComponent = (OMX_S32) 0x80001004,
-
- /** One or more parameters were not valid */
- OMX_ErrorBadParameter = (OMX_S32) 0x80001005,
-
- /** The requested function is not implemented */
- OMX_ErrorNotImplemented = (OMX_S32) 0x80001006,
-
- /** The buffer was emptied before the next buffer was ready */
- OMX_ErrorUnderflow = (OMX_S32) 0x80001007,
-
- /** The buffer was not available when it was needed */
- OMX_ErrorOverflow = (OMX_S32) 0x80001008,
-
- /** The hardware failed to respond as expected */
- OMX_ErrorHardware = (OMX_S32) 0x80001009,
-
- /** The component is in the state OMX_StateInvalid */
- OMX_ErrorInvalidState = (OMX_S32) 0x8000100A,
-
- /** Stream is found to be corrupt */
- OMX_ErrorStreamCorrupt = (OMX_S32) 0x8000100B,
-
- /** Ports being connected are not compatible */
- OMX_ErrorPortsNotCompatible = (OMX_S32) 0x8000100C,
-
- /** Resources allocated to an idle component have been
- lost resulting in the component returning to the loaded state */
- OMX_ErrorResourcesLost = (OMX_S32) 0x8000100D,
-
- /** No more indicies can be enumerated */
- OMX_ErrorNoMore = (OMX_S32) 0x8000100E,
-
- /** The component detected a version mismatch */
- OMX_ErrorVersionMismatch = (OMX_S32) 0x8000100F,
-
- /** The component is not ready to return data at this time */
- OMX_ErrorNotReady = (OMX_S32) 0x80001010,
-
- /** There was a timeout that occurred */
- OMX_ErrorTimeout = (OMX_S32) 0x80001011,
-
- /** This error occurs when trying to transition into the state you are already in */
- OMX_ErrorSameState = (OMX_S32) 0x80001012,
-
- /** Resources allocated to an executing or paused component have been
- preempted, causing the component to return to the idle state */
- OMX_ErrorResourcesPreempted = (OMX_S32) 0x80001013,
-
- /** A non-supplier port sends this error to the IL client (via the EventHandler callback)
- during the allocation of buffers (on a transition from the LOADED to the IDLE state or
- on a port restart) when it deems that it has waited an unusually long time for the supplier
- to send it an allocated buffer via a UseBuffer call. */
- OMX_ErrorPortUnresponsiveDuringAllocation = (OMX_S32) 0x80001014,
-
- /** A non-supplier port sends this error to the IL client (via the EventHandler callback)
- during the deallocation of buffers (on a transition from the IDLE to LOADED state or
- on a port stop) when it deems that it has waited an unusually long time for the supplier
- to request the deallocation of a buffer header via a FreeBuffer call. */
- OMX_ErrorPortUnresponsiveDuringDeallocation = (OMX_S32) 0x80001015,
-
- /** A supplier port sends this error to the IL client (via the EventHandler callback)
- during the stopping of a port (either on a transition from the IDLE to LOADED
- state or a port stop) when it deems that it has waited an unusually long time for
- the non-supplier to return a buffer via an EmptyThisBuffer or FillThisBuffer call. */
- OMX_ErrorPortUnresponsiveDuringStop = (OMX_S32) 0x80001016,
-
- /** Attempting a state transtion that is not allowed */
- OMX_ErrorIncorrectStateTransition = (OMX_S32) 0x80001017,
-
- /* Attempting a command that is not allowed during the present state. */
- OMX_ErrorIncorrectStateOperation = (OMX_S32) 0x80001018,
-
- /** The values encapsulated in the parameter or config structure are not supported. */
- OMX_ErrorUnsupportedSetting = (OMX_S32) 0x80001019,
-
- /** The parameter or config indicated by the given index is not supported. */
- OMX_ErrorUnsupportedIndex = (OMX_S32) 0x8000101A,
-
- /** The port index supplied is incorrect. */
- OMX_ErrorBadPortIndex = (OMX_S32) 0x8000101B,
-
- /** The port has lost one or more of its buffers and it thus unpopulated. */
- OMX_ErrorPortUnpopulated = (OMX_S32) 0x8000101C,
-
- /** Component suspended due to temporary loss of resources */
- OMX_ErrorComponentSuspended = (OMX_S32) 0x8000101D,
-
- /** Component suspended due to an inability to acquire dynamic resources */
- OMX_ErrorDynamicResourcesUnavailable = (OMX_S32) 0x8000101E,
-
- /** When the macroblock error reporting is enabled the component returns new error
- for every frame that has errors */
- OMX_ErrorMbErrorsInFrame = (OMX_S32) 0x8000101F,
-
- /** A component reports this error when it cannot parse or determine the format of an input stream. */
- OMX_ErrorFormatNotDetected = (OMX_S32) 0x80001020,
-
- /** The content open operation failed. */
- OMX_ErrorContentPipeOpenFailed = (OMX_S32) 0x80001021,
-
- /** The content creation operation failed. */
- OMX_ErrorContentPipeCreationFailed = (OMX_S32) 0x80001022,
-
- /** Separate table information is being used */
- OMX_ErrorSeperateTablesUsed = (OMX_S32) 0x80001023,
-
- /** Tunneling is unsupported by the component*/
- OMX_ErrorTunnelingUnsupported = (OMX_S32) 0x80001024,
-
- OMX_ErrorKhronosExtensions = (OMX_S32)0x8F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_ErrorVendorStartUnused = (OMX_S32)0x90000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_ErrorMax = 0x7FFFFFFF
-} OMX_ERRORTYPE;
-
-/** @ingroup core */
-typedef OMX_ERRORTYPE (* OMX_COMPONENTINITTYPE)(OMX_IN OMX_HANDLETYPE hComponent);
-
-/** @ingroup core */
-typedef struct OMX_COMPONENTREGISTERTYPE
-{
- const char * pName; /* Component name, 128 byte limit (including '\0') applies */
- OMX_COMPONENTINITTYPE pInitialize; /* Component instance initialization function */
-} OMX_COMPONENTREGISTERTYPE;
-
-/** @ingroup core */
-extern OMX_COMPONENTREGISTERTYPE OMX_ComponentRegistered[];
-
-/** @ingroup rpm */
-typedef struct OMX_PRIORITYMGMTTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nGroupPriority; /**< Priority of the component group */
- OMX_U32 nGroupID; /**< ID of the component group */
-} OMX_PRIORITYMGMTTYPE;
-
-/* Component name and Role names are limited to 128 characters including the terminating '\0'. */
-#define OMX_MAX_STRINGNAME_SIZE 128
-
-/** @ingroup comp */
-typedef struct OMX_PARAM_COMPONENTROLETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U8 cRole[OMX_MAX_STRINGNAME_SIZE]; /**< name of standard component which defines component role */
-} OMX_PARAM_COMPONENTROLETYPE;
-
-/** End of Stream Buffer Flag:
- *
- * A component sets EOS when it has no more data to emit on a particular
- * output port. Thus an output port shall set EOS on the last buffer it
- * emits. A component's determination of when an output port should
- * cease sending data is implemenation specific.
- * @ingroup buf
- */
-
-#define OMX_BUFFERFLAG_EOS 0x00000001
-
-/** Start Time Buffer Flag:
- *
- * The source of a stream (e.g. a demux component) sets the STARTTIME
- * flag on the buffer that contains the starting timestamp for the
- * stream. The starting timestamp corresponds to the first data that
- * should be displayed at startup or after a seek.
- * The first timestamp of the stream is not necessarily the start time.
- * For instance, in the case of a seek to a particular video frame,
- * the target frame may be an interframe. Thus the first buffer of
- * the stream will be the intra-frame preceding the target frame and
- * the starttime will occur with the target frame (with any other
- * required frames required to reconstruct the target intervening).
- *
- * The STARTTIME flag is directly associated with the buffer's
- * timestamp ' thus its association to buffer data and its
- * propagation is identical to the timestamp's.
- *
- * When a Sync Component client receives a buffer with the
- * STARTTIME flag it shall perform a SetConfig on its sync port
- * using OMX_ConfigTimeClientStartTime and passing the buffer's
- * timestamp.
- *
- * @ingroup buf
- */
-
-#define OMX_BUFFERFLAG_STARTTIME 0x00000002
-
-
-
-/** Decode Only Buffer Flag:
- *
- * The source of a stream (e.g. a demux component) sets the DECODEONLY
- * flag on any buffer that should shall be decoded but should not be
- * displayed. This flag is used, for instance, when a source seeks to
- * a target interframe that requires the decode of frames preceding the
- * target to facilitate the target's reconstruction. In this case the
- * source would emit the frames preceding the target downstream
- * but mark them as decode only.
- *
- * The DECODEONLY is associated with buffer data and propagated in a
- * manner identical to the buffer timestamp.
- *
- * A component that renders data should ignore all buffers with
- * the DECODEONLY flag set.
- *
- * @ingroup buf
- */
-
-#define OMX_BUFFERFLAG_DECODEONLY 0x00000004
-
-
-/* Data Corrupt Flag: This flag is set when the IL client believes the data in the associated buffer is corrupt
- * @ingroup buf
- */
-
-#define OMX_BUFFERFLAG_DATACORRUPT 0x00000008
-
-/* End of Frame: The buffer contains exactly one end of frame and no data
- * occurs after the end of frame. This flag is an optional hint. The absence
- * of this flag does not imply the absence of an end of frame within the buffer.
- * @ingroup buf
-*/
-#define OMX_BUFFERFLAG_ENDOFFRAME 0x00000010
-
-/* Sync Frame Flag: This flag is set when the buffer content contains a coded sync frame '
- * a frame that has no dependency on any other frame information
- * @ingroup buf
- */
-#define OMX_BUFFERFLAG_SYNCFRAME 0x00000020
-
-/* Extra data present flag: there is extra data appended to the data stream
- * residing in the buffer
- * @ingroup buf
- */
-#define OMX_BUFFERFLAG_EXTRADATA 0x00000040
-
-/** Codec Config Buffer Flag:
-* OMX_BUFFERFLAG_CODECCONFIG is an optional flag that is set by an
-* output port when all bytes in the buffer form part or all of a set of
-* codec specific configuration data. Examples include SPS/PPS nal units
-* for OMX_VIDEO_CodingAVC or AudioSpecificConfig data for
-* OMX_AUDIO_CodingAAC. Any component that for a given stream sets
-* OMX_BUFFERFLAG_CODECCONFIG shall not mix codec configuration bytes
-* with frame data in the same buffer, and shall send all buffers
-* containing codec configuration bytes before any buffers containing
-* frame data that those configurations bytes describe.
-* If the stream format for a particular codec has a frame specific
-* header at the start of each frame, for example OMX_AUDIO_CodingMP3 or
-* OMX_AUDIO_CodingAAC in ADTS mode, then these shall be presented as
-* normal without setting OMX_BUFFERFLAG_CODECCONFIG.
- * @ingroup buf
- */
-#define OMX_BUFFERFLAG_CODECCONFIG 0x00000080
-
-
-
-/** @ingroup buf */
-typedef struct OMX_BUFFERHEADERTYPE
-{
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U8* pBuffer; /**< Pointer to actual block of memory
- that is acting as the buffer */
- OMX_U32 nAllocLen; /**< size of the buffer allocated, in bytes */
- OMX_U32 nFilledLen; /**< number of bytes currently in the
- buffer */
- OMX_U32 nOffset; /**< start offset of valid data in bytes from
- the start of the buffer */
- OMX_PTR pAppPrivate; /**< pointer to any data the application
- wants to associate with this buffer */
- OMX_PTR pPlatformPrivate; /**< pointer to any data the platform
- wants to associate with this buffer */
- OMX_PTR pInputPortPrivate; /**< pointer to any data the input port
- wants to associate with this buffer */
- OMX_PTR pOutputPortPrivate; /**< pointer to any data the output port
- wants to associate with this buffer */
- OMX_HANDLETYPE hMarkTargetComponent; /**< The component that will generate a
- mark event upon processing this buffer. */
- OMX_PTR pMarkData; /**< Application specific data associated with
- the mark sent on a mark event to disambiguate
- this mark from others. */
- OMX_U32 nTickCount; /**< Optional entry that the component and
- application can update with a tick count
- when they access the component. This
- value should be in microseconds. Since
- this is a value relative to an arbitrary
- starting point, this value cannot be used
- to determine absolute time. This is an
- optional entry and not all components
- will update it.*/
- OMX_TICKS nTimeStamp; /**< Timestamp corresponding to the sample
- starting at the first logical sample
- boundary in the buffer. Timestamps of
- successive samples within the buffer may
- be inferred by adding the duration of the
- of the preceding buffer to the timestamp
- of the preceding buffer.*/
- OMX_U32 nFlags; /**< buffer specific flags */
- OMX_U32 nOutputPortIndex; /**< The index of the output port (if any) using
- this buffer */
- OMX_U32 nInputPortIndex; /**< The index of the input port (if any) using
- this buffer */
-} OMX_BUFFERHEADERTYPE;
-
-/** The OMX_EXTRADATATYPE enumeration is used to define the
- * possible extra data payload types.
- * NB: this enum is binary backwards compatible with the previous
- * OMX_EXTRADATA_QUANT define. This should be replaced with
- * OMX_ExtraDataQuantization.
- */
-typedef enum OMX_EXTRADATATYPE
-{
- OMX_ExtraDataNone = 0, /**< Indicates that no more extra data sections follow */
- OMX_ExtraDataQuantization, /**< The data payload contains quantization data */
- OMX_ExtraDataKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_ExtraDataVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_ExtraDataMax = 0x7FFFFFFF
-} OMX_EXTRADATATYPE;
-
-
-typedef struct OMX_OTHER_EXTRADATATYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_EXTRADATATYPE eType; /* Extra Data type */
- OMX_U32 nDataSize; /* Size of the supporting data to follow */
- OMX_U8 data[1]; /* Supporting data hint */
-} OMX_OTHER_EXTRADATATYPE;
-
-/** @ingroup comp */
-typedef struct OMX_PORT_PARAM_TYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPorts; /**< The number of ports for this component */
- OMX_U32 nStartPortNumber; /** first port number for this type of port */
-} OMX_PORT_PARAM_TYPE;
-
-/** @ingroup comp */
-typedef enum OMX_EVENTTYPE
-{
- OMX_EventCmdComplete, /**< component has sucessfully completed a command */
- OMX_EventError, /**< component has detected an error condition */
- OMX_EventMark, /**< component has detected a buffer mark */
- OMX_EventPortSettingsChanged, /**< component is reported a port settings change */
- OMX_EventBufferFlag, /**< component has detected an EOS */
- OMX_EventResourcesAcquired, /**< component has been granted resources and is
- automatically starting the state change from
- OMX_StateWaitForResources to OMX_StateIdle. */
- OMX_EventComponentResumed, /**< Component resumed due to reacquisition of resources */
- OMX_EventDynamicResourcesAvailable, /**< Component has acquired previously unavailable dynamic resources */
- OMX_EventPortFormatDetected, /**< Component has detected a supported format. */
- OMX_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_EventMax = 0x7FFFFFFF
-} OMX_EVENTTYPE;
-
-typedef struct OMX_CALLBACKTYPE
-{
- /** The EventHandler method is used to notify the application when an
- event of interest occurs. Events are defined in the OMX_EVENTTYPE
- enumeration. Please see that enumeration for details of what will
- be returned for each type of event. Callbacks should not return
- an error to the component, so if an error occurs, the application
- shall handle it internally. This is a blocking call.
-
- The application should return from this call within 5 msec to avoid
- blocking the component for an excessively long period of time.
-
- @param hComponent
- handle of the component to access. This is the component
- handle returned by the call to the GetHandle function.
- @param pAppData
- pointer to an application defined value that was provided in the
- pAppData parameter to the OMX_GetHandle method for the component.
- This application defined value is provided so that the application
- can have a component specific context when receiving the callback.
- @param eEvent
- Event that the component wants to notify the application about.
- @param nData1
- nData will be the OMX_ERRORTYPE for an error event and will be
- an OMX_COMMANDTYPE for a command complete event and OMX_INDEXTYPE for a OMX_PortSettingsChanged event.
- @param nData2
- nData2 will hold further information related to the event. Can be OMX_STATETYPE for
- a OMX_CommandStateSet command or port index for a OMX_PortSettingsChanged event.
- Default value is 0 if not used. )
- @param pEventData
- Pointer to additional event-specific data (see spec for meaning).
- */
-
- OMX_ERRORTYPE (*EventHandler)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_PTR pAppData,
- OMX_IN OMX_EVENTTYPE eEvent,
- OMX_IN OMX_U32 nData1,
- OMX_IN OMX_U32 nData2,
- OMX_IN OMX_PTR pEventData);
-
- /** The EmptyBufferDone method is used to return emptied buffers from an
- input port back to the application for reuse. This is a blocking call
- so the application should not attempt to refill the buffers during this
- call, but should queue them and refill them in another thread. There
- is no error return, so the application shall handle any errors generated
- internally.
-
- The application should return from this call within 5 msec.
-
- @param hComponent
- handle of the component to access. This is the component
- handle returned by the call to the GetHandle function.
- @param pAppData
- pointer to an application defined value that was provided in the
- pAppData parameter to the OMX_GetHandle method for the component.
- This application defined value is provided so that the application
- can have a component specific context when receiving the callback.
- @param pBuffer
- pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer
- or AllocateBuffer indicating the buffer that was emptied.
- @ingroup buf
- */
- OMX_ERRORTYPE (*EmptyBufferDone)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_PTR pAppData,
- OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
-
- /** The FillBufferDone method is used to return filled buffers from an
- output port back to the application for emptying and then reuse.
- This is a blocking call so the application should not attempt to
- empty the buffers during this call, but should queue the buffers
- and empty them in another thread. There is no error return, so
- the application shall handle any errors generated internally. The
- application shall also update the buffer header to indicate the
- number of bytes placed into the buffer.
-
- The application should return from this call within 5 msec.
-
- @param hComponent
- handle of the component to access. This is the component
- handle returned by the call to the GetHandle function.
- @param pAppData
- pointer to an application defined value that was provided in the
- pAppData parameter to the OMX_GetHandle method for the component.
- This application defined value is provided so that the application
- can have a component specific context when receiving the callback.
- @param pBuffer
- pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer
- or AllocateBuffer indicating the buffer that was filled.
- @ingroup buf
- */
- OMX_ERRORTYPE (*FillBufferDone)(
- OMX_OUT OMX_HANDLETYPE hComponent,
- OMX_OUT OMX_PTR pAppData,
- OMX_OUT OMX_BUFFERHEADERTYPE* pBuffer);
-
-} OMX_CALLBACKTYPE;
-
-/** The OMX_BUFFERSUPPLIERTYPE enumeration is used to dictate port supplier
- preference when tunneling between two ports.
- @ingroup tun buf
-*/
-typedef enum OMX_BUFFERSUPPLIERTYPE
-{
- OMX_BufferSupplyUnspecified = 0x0, /**< port supplying the buffers is unspecified,
- or don't care */
- OMX_BufferSupplyInput, /**< input port supplies the buffers */
- OMX_BufferSupplyOutput, /**< output port supplies the buffers */
- OMX_BufferSupplyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_BufferSupplyVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_BufferSupplyMax = 0x7FFFFFFF
-} OMX_BUFFERSUPPLIERTYPE;
-
-
-/** buffer supplier parameter
- * @ingroup tun
- */
-typedef struct OMX_PARAM_BUFFERSUPPLIERTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BUFFERSUPPLIERTYPE eBufferSupplier; /**< buffer supplier */
-} OMX_PARAM_BUFFERSUPPLIERTYPE;
-
-
-/**< indicates that buffers received by an input port of a tunnel
- may not modify the data in the buffers
- @ingroup tun
- */
-#define OMX_PORTTUNNELFLAG_READONLY 0x00000001
-
-
-/** The OMX_TUNNELSETUPTYPE structure is used to pass data from an output
- port to an input port as part the two ComponentTunnelRequest calls
- resulting from a OMX_SetupTunnel call from the IL Client.
- @ingroup tun
- */
-typedef struct OMX_TUNNELSETUPTYPE
-{
- OMX_U32 nTunnelFlags; /**< bit flags for tunneling */
- OMX_BUFFERSUPPLIERTYPE eSupplier; /**< supplier preference */
-} OMX_TUNNELSETUPTYPE;
-
-/* OMX Component headers is included to enable the core to use
- macros for functions into the component for OMX release 1.0.
- Developers should not access any structures or data from within
- the component header directly */
-/* TO BE REMOVED - #include <OMX_Component.h> */
-
-/** GetComponentVersion will return information about the component.
- This is a blocking call. This macro will go directly from the
- application to the component (via a core macro). The
- component will return from this call within 5 msec.
- @param [in] hComponent
- handle of component to execute the command
- @param [out] pComponentName
- pointer to an empty string of length 128 bytes. The component
- will write its name into this string. The name will be
- terminated by a single zero byte. The name of a component will
- be 127 bytes or less to leave room for the trailing zero byte.
- An example of a valid component name is "OMX.ABC.ChannelMixer\0".
- @param [out] pComponentVersion
- pointer to an OMX Version structure that the component will fill
- in. The component will fill in a value that indicates the
- component version. NOTE: the component version is NOT the same
- as the OMX Specification version (found in all structures). The
- component version is defined by the vendor of the component and
- its value is entirely up to the component vendor.
- @param [out] pSpecVersion
- pointer to an OMX Version structure that the component will fill
- in. The SpecVersion is the version of the specification that the
- component was built against. Please note that this value may or
- may not match the structure's version. For example, if the
- component was built against the 2.0 specification, but the
- application (which creates the structure is built against the
- 1.0 specification the versions would be different.
- @param [out] pComponentUUID
- pointer to the UUID of the component which will be filled in by
- the component. The UUID is a unique identifier that is set at
- RUN time for the component and is unique to each instantion of
- the component.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp
- */
-#define OMX_GetComponentVersion( \
- hComponent, \
- pComponentName, \
- pComponentVersion, \
- pSpecVersion, \
- pComponentUUID) \
- ((OMX_COMPONENTTYPE*)hComponent)->GetComponentVersion( \
- hComponent, \
- pComponentName, \
- pComponentVersion, \
- pSpecVersion, \
- pComponentUUID) /* Macro End */
-
-
-/** Send a command to the component. This call is a non-blocking call.
- The component should check the parameters and then queue the command
- to the component thread to be executed. The component thread shall
- send the EventHandler() callback at the conclusion of the command.
- This macro will go directly from the application to the component (via
- a core macro). The component will return from this call within 5 msec.
-
- When the command is "OMX_CommandStateSet" the component will queue a
- state transition to the new state idenfied in nParam.
-
- When the command is "OMX_CommandFlush", to flush a port's buffer queues,
- the command will force the component to return all buffers NOT CURRENTLY
- BEING PROCESSED to the application, in the order in which the buffers
- were received.
-
- When the command is "OMX_CommandPortDisable" or
- "OMX_CommandPortEnable", the component's port (given by the value of
- nParam) will be stopped or restarted.
-
- When the command "OMX_CommandMarkBuffer" is used to mark a buffer, the
- pCmdData will point to a OMX_MARKTYPE structure containing the component
- handle of the component to examine the buffer chain for the mark. nParam1
- contains the index of the port on which the buffer mark is applied.
-
- Specification text for more details.
-
- @param [in] hComponent
- handle of component to execute the command
- @param [in] Cmd
- Command for the component to execute
- @param [in] nParam
- Parameter for the command to be executed. When Cmd has the value
- OMX_CommandStateSet, value is a member of OMX_STATETYPE. When Cmd has
- the value OMX_CommandFlush, value of nParam indicates which port(s)
- to flush. -1 is used to flush all ports a single port index will
- only flush that port. When Cmd has the value "OMX_CommandPortDisable"
- or "OMX_CommandPortEnable", the component's port is given by
- the value of nParam. When Cmd has the value "OMX_CommandMarkBuffer"
- the components pot is given by the value of nParam.
- @param [in] pCmdData
- Parameter pointing to the OMX_MARKTYPE structure when Cmd has the value
- "OMX_CommandMarkBuffer".
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp
- */
-#define OMX_SendCommand( \
- hComponent, \
- Cmd, \
- nParam, \
- pCmdData) \
- ((OMX_COMPONENTTYPE*)hComponent)->SendCommand( \
- hComponent, \
- Cmd, \
- nParam, \
- pCmdData) /* Macro End */
-
-
-/** The OMX_GetParameter macro will get one of the current parameter
- settings from the component. This macro cannot only be invoked when
- the component is in the OMX_StateInvalid state. The nParamIndex
- parameter is used to indicate which structure is being requested from
- the component. The application shall allocate the correct structure
- and shall fill in the structure size and version information before
- invoking this macro. When the parameter applies to a port, the
- caller shall fill in the appropriate nPortIndex value indicating the
- port on which the parameter applies. If the component has not had
- any settings changed, then the component should return a set of
- valid DEFAULT parameters for the component. This is a blocking
- call.
-
- The component should return from this call within 20 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [in] nParamIndex
- Index of the structure to be filled. This value is from the
- OMX_INDEXTYPE enumeration.
- @param [in,out] pComponentParameterStructure
- Pointer to application allocated structure to be filled by the
- component.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp
- */
-#define OMX_GetParameter( \
- hComponent, \
- nParamIndex, \
- pComponentParameterStructure) \
- ((OMX_COMPONENTTYPE*)hComponent)->GetParameter( \
- hComponent, \
- nParamIndex, \
- pComponentParameterStructure) /* Macro End */
-
-
-/** The OMX_SetParameter macro will send an initialization parameter
- structure to a component. Each structure shall be sent one at a time,
- in a separate invocation of the macro. This macro can only be
- invoked when the component is in the OMX_StateLoaded state, or the
- port is disabled (when the parameter applies to a port). The
- nParamIndex parameter is used to indicate which structure is being
- passed to the component. The application shall allocate the
- correct structure and shall fill in the structure size and version
- information (as well as the actual data) before invoking this macro.
- The application is free to dispose of this structure after the call
- as the component is required to copy any data it shall retain. This
- is a blocking call.
-
- The component should return from this call within 20 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [in] nIndex
- Index of the structure to be sent. This value is from the
- OMX_INDEXTYPE enumeration.
- @param [in] pComponentParameterStructure
- pointer to application allocated structure to be used for
- initialization by the component.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp
- */
-#define OMX_SetParameter( \
- hComponent, \
- nParamIndex, \
- pComponentParameterStructure) \
- ((OMX_COMPONENTTYPE*)hComponent)->SetParameter( \
- hComponent, \
- nParamIndex, \
- pComponentParameterStructure) /* Macro End */
-
-
-/** The OMX_GetConfig macro will get one of the configuration structures
- from a component. This macro can be invoked anytime after the
- component has been loaded. The nParamIndex call parameter is used to
- indicate which structure is being requested from the component. The
- application shall allocate the correct structure and shall fill in the
- structure size and version information before invoking this macro.
- If the component has not had this configuration parameter sent before,
- then the component should return a set of valid DEFAULT values for the
- component. This is a blocking call.
-
- The component should return from this call within 5 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [in] nIndex
- Index of the structure to be filled. This value is from the
- OMX_INDEXTYPE enumeration.
- @param [in,out] pComponentConfigStructure
- pointer to application allocated structure to be filled by the
- component.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp
-*/
-#define OMX_GetConfig( \
- hComponent, \
- nConfigIndex, \
- pComponentConfigStructure) \
- ((OMX_COMPONENTTYPE*)hComponent)->GetConfig( \
- hComponent, \
- nConfigIndex, \
- pComponentConfigStructure) /* Macro End */
-
-
-/** The OMX_SetConfig macro will send one of the configuration
- structures to a component. Each structure shall be sent one at a time,
- each in a separate invocation of the macro. This macro can be invoked
- anytime after the component has been loaded. The application shall
- allocate the correct structure and shall fill in the structure size
- and version information (as well as the actual data) before invoking
- this macro. The application is free to dispose of this structure after
- the call as the component is required to copy any data it shall retain.
- This is a blocking call.
-
- The component should return from this call within 5 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [in] nConfigIndex
- Index of the structure to be sent. This value is from the
- OMX_INDEXTYPE enumeration above.
- @param [in] pComponentConfigStructure
- pointer to application allocated structure to be used for
- initialization by the component.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp
- */
-#define OMX_SetConfig( \
- hComponent, \
- nConfigIndex, \
- pComponentConfigStructure) \
- ((OMX_COMPONENTTYPE*)hComponent)->SetConfig( \
- hComponent, \
- nConfigIndex, \
- pComponentConfigStructure) /* Macro End */
-
-
-/** The OMX_GetExtensionIndex macro will invoke a component to translate
- a vendor specific configuration or parameter string into an OMX
- structure index. There is no requirement for the vendor to support
- this command for the indexes already found in the OMX_INDEXTYPE
- enumeration (this is done to save space in small components). The
- component shall support all vendor supplied extension indexes not found
- in the master OMX_INDEXTYPE enumeration. This is a blocking call.
-
- The component should return from this call within 5 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the GetHandle function.
- @param [in] cParameterName
- OMX_STRING that shall be less than 128 characters long including
- the trailing null byte. This is the string that will get
- translated by the component into a configuration index.
- @param [out] pIndexType
- a pointer to a OMX_INDEXTYPE to receive the index value.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp
- */
-#define OMX_GetExtensionIndex( \
- hComponent, \
- cParameterName, \
- pIndexType) \
- ((OMX_COMPONENTTYPE*)hComponent)->GetExtensionIndex( \
- hComponent, \
- cParameterName, \
- pIndexType) /* Macro End */
-
-
-/** The OMX_GetState macro will invoke the component to get the current
- state of the component and place the state value into the location
- pointed to by pState.
-
- The component should return from this call within 5 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [out] pState
- pointer to the location to receive the state. The value returned
- is one of the OMX_STATETYPE members
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp
- */
-#define OMX_GetState( \
- hComponent, \
- pState) \
- ((OMX_COMPONENTTYPE*)hComponent)->GetState( \
- hComponent, \
- pState) /* Macro End */
-
-
-/** The OMX_UseBuffer macro will request that the component use
- a buffer (and allocate its own buffer header) already allocated
- by another component, or by the IL Client. This is a blocking
- call.
-
- The component should return from this call within 20 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [out] ppBuffer
- pointer to an OMX_BUFFERHEADERTYPE structure used to receive the
- pointer to the buffer header
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp buf
- */
-
-#define OMX_UseBuffer( \
- hComponent, \
- ppBufferHdr, \
- nPortIndex, \
- pAppPrivate, \
- nSizeBytes, \
- pBuffer) \
- ((OMX_COMPONENTTYPE*)hComponent)->UseBuffer( \
- hComponent, \
- ppBufferHdr, \
- nPortIndex, \
- pAppPrivate, \
- nSizeBytes, \
- pBuffer)
-
-
-/** The OMX_AllocateBuffer macro will request that the component allocate
- a new buffer and buffer header. The component will allocate the
- buffer and the buffer header and return a pointer to the buffer
- header. This is a blocking call.
-
- The component should return from this call within 5 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [out] ppBuffer
- pointer to an OMX_BUFFERHEADERTYPE structure used to receive
- the pointer to the buffer header
- @param [in] nPortIndex
- nPortIndex is used to select the port on the component the buffer will
- be used with. The port can be found by using the nPortIndex
- value as an index into the Port Definition array of the component.
- @param [in] pAppPrivate
- pAppPrivate is used to initialize the pAppPrivate member of the
- buffer header structure.
- @param [in] nSizeBytes
- size of the buffer to allocate. Used when bAllocateNew is true.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp buf
- */
-#define OMX_AllocateBuffer( \
- hComponent, \
- ppBuffer, \
- nPortIndex, \
- pAppPrivate, \
- nSizeBytes) \
- ((OMX_COMPONENTTYPE*)hComponent)->AllocateBuffer( \
- hComponent, \
- ppBuffer, \
- nPortIndex, \
- pAppPrivate, \
- nSizeBytes) /* Macro End */
-
-
-/** The OMX_FreeBuffer macro will release a buffer header from the component
- which was allocated using either OMX_AllocateBuffer or OMX_UseBuffer. If
- the component allocated the buffer (see the OMX_UseBuffer macro) then
- the component shall free the buffer and buffer header. This is a
- blocking call.
-
- The component should return from this call within 20 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [in] nPortIndex
- nPortIndex is used to select the port on the component the buffer will
- be used with.
- @param [in] pBuffer
- pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer
- or AllocateBuffer.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp buf
- */
-#define OMX_FreeBuffer( \
- hComponent, \
- nPortIndex, \
- pBuffer) \
- ((OMX_COMPONENTTYPE*)hComponent)->FreeBuffer( \
- hComponent, \
- nPortIndex, \
- pBuffer) /* Macro End */
-
-
-/** The OMX_EmptyThisBuffer macro will send a buffer full of data to an
- input port of a component. The buffer will be emptied by the component
- and returned to the application via the EmptyBufferDone call back.
- This is a non-blocking call in that the component will record the buffer
- and return immediately and then empty the buffer, later, at the proper
- time. As expected, this macro may be invoked only while the component
- is in the OMX_StateExecuting. If nPortIndex does not specify an input
- port, the component shall return an error.
-
- The component should return from this call within 5 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [in] pBuffer
- pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer
- or AllocateBuffer.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp buf
- */
-#define OMX_EmptyThisBuffer( \
- hComponent, \
- pBuffer) \
- ((OMX_COMPONENTTYPE*)hComponent)->EmptyThisBuffer( \
- hComponent, \
- pBuffer) /* Macro End */
-
-
-/** The OMX_FillThisBuffer macro will send an empty buffer to an
- output port of a component. The buffer will be filled by the component
- and returned to the application via the FillBufferDone call back.
- This is a non-blocking call in that the component will record the buffer
- and return immediately and then fill the buffer, later, at the proper
- time. As expected, this macro may be invoked only while the component
- is in the OMX_ExecutingState. If nPortIndex does not specify an output
- port, the component shall return an error.
-
- The component should return from this call within 5 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [in] pBuffer
- pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer
- or AllocateBuffer.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp buf
- */
-#define OMX_FillThisBuffer( \
- hComponent, \
- pBuffer) \
- ((OMX_COMPONENTTYPE*)hComponent)->FillThisBuffer( \
- hComponent, \
- pBuffer) /* Macro End */
-
-
-
-/** The OMX_UseEGLImage macro will request that the component use
- a EGLImage provided by EGL (and allocate its own buffer header)
- This is a blocking call.
-
- The component should return from this call within 20 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [out] ppBuffer
- pointer to an OMX_BUFFERHEADERTYPE structure used to receive the
- pointer to the buffer header. Note that the memory location used
- for this buffer is NOT visible to the IL Client.
- @param [in] nPortIndex
- nPortIndex is used to select the port on the component the buffer will
- be used with. The port can be found by using the nPortIndex
- value as an index into the Port Definition array of the component.
- @param [in] pAppPrivate
- pAppPrivate is used to initialize the pAppPrivate member of the
- buffer header structure.
- @param [in] eglImage
- eglImage contains the handle of the EGLImage to use as a buffer on the
- specified port. The component is expected to validate properties of
- the EGLImage against the configuration of the port to ensure the component
- can use the EGLImage as a buffer.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp buf
- */
-#define OMX_UseEGLImage( \
- hComponent, \
- ppBufferHdr, \
- nPortIndex, \
- pAppPrivate, \
- eglImage) \
- ((OMX_COMPONENTTYPE*)hComponent)->UseEGLImage( \
- hComponent, \
- ppBufferHdr, \
- nPortIndex, \
- pAppPrivate, \
- eglImage)
-
-/** The OMX_Init method is used to initialize the OMX core. It shall be the
- first call made into OMX and it should only be executed one time without
- an interviening OMX_Deinit call.
-
- The core should return from this call within 20 msec.
-
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup core
- */
-OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Init(void);
-
-
-/** The OMX_Deinit method is used to deinitialize the OMX core. It shall be
- the last call made into OMX. In the event that the core determines that
- thare are components loaded when this call is made, the core may return
- with an error rather than try to unload the components.
-
- The core should return from this call within 20 msec.
-
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup core
- */
-OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Deinit(void);
-
-
-/** The OMX_ComponentNameEnum method will enumerate through all the names of
- recognised valid components in the system. This function is provided
- as a means to detect all the components in the system run-time. There is
- no strict ordering to the enumeration order of component names, although
- each name will only be enumerated once. If the OMX core supports run-time
- installation of new components, it is only requried to detect newly
- installed components when the first call to enumerate component names
- is made (i.e. when nIndex is 0x0).
-
- The core should return from this call in 20 msec.
-
- @param [out] cComponentName
- pointer to a null terminated string with the component name. The
- names of the components are strings less than 127 bytes in length
- plus the trailing null for a maximum size of 128 bytes. An example
- of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are
- assigned by the vendor, but shall start with "OMX." and then have
- the Vendor designation next.
- @param [in] nNameLength
- number of characters in the cComponentName string. With all
- component name strings restricted to less than 128 characters
- (including the trailing null) it is recomended that the caller
- provide a input string for the cComponentName of 128 characters.
- @param [in] nIndex
- number containing the enumeration index for the component.
- Multiple calls to OMX_ComponentNameEnum with increasing values
- of nIndex will enumerate through the component names in the
- system until OMX_ErrorNoMore is returned. The value of nIndex
- is 0 to (N-1), where N is the number of valid installed components
- in the system.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. When the value of nIndex exceeds the number of
- components in the system minus 1, OMX_ErrorNoMore will be
- returned. Otherwise the appropriate OMX error will be returned.
- @ingroup core
- */
-OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_ComponentNameEnum(
- OMX_OUT OMX_STRING cComponentName,
- OMX_IN OMX_U32 nNameLength,
- OMX_IN OMX_U32 nIndex);
-
-
-/** The OMX_GetHandle method will locate the component specified by the
- component name given, load that component into memory and then invoke
- the component's methods to create an instance of the component.
-
- The core should return from this call within 20 msec.
-
- @param [out] pHandle
- pointer to an OMX_HANDLETYPE pointer to be filled in by this method.
- @param [in] cComponentName
- pointer to a null terminated string with the component name. The
- names of the components are strings less than 127 bytes in length
- plus the trailing null for a maximum size of 128 bytes. An example
- of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are
- assigned by the vendor, but shall start with "OMX." and then have
- the Vendor designation next.
- @param [in] pAppData
- pointer to an application defined value that will be returned
- during callbacks so that the application can identify the source
- of the callback.
- @param [in] pCallBacks
- pointer to a OMX_CALLBACKTYPE structure that will be passed to the
- component to initialize it with.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup core
- */
-OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_GetHandle(
- OMX_OUT OMX_HANDLETYPE* pHandle,
- OMX_IN OMX_STRING cComponentName,
- OMX_IN OMX_PTR pAppData,
- OMX_IN OMX_CALLBACKTYPE* pCallBacks);
-
-
-/** The OMX_FreeHandle method will free a handle allocated by the OMX_GetHandle
- method. If the component reference count goes to zero, the component will
- be unloaded from memory.
-
- The core should return from this call within 20 msec when the component is
- in the OMX_StateLoaded state.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the GetHandle function.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup core
- */
-OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_FreeHandle(
- OMX_IN OMX_HANDLETYPE hComponent);
-
-
-
-/** The OMX_SetupTunnel method will handle the necessary calls to the components
- to setup the specified tunnel the two components. NOTE: This is
- an actual method (not a #define macro). This method will make calls into
- the component ComponentTunnelRequest method to do the actual tunnel
- connection.
-
- The ComponentTunnelRequest method on both components will be called.
- This method shall not be called unless the component is in the
- OMX_StateLoaded state except when the ports used for the tunnel are
- disabled. In this case, the component may be in the OMX_StateExecuting,
- OMX_StatePause, or OMX_StateIdle states.
-
- The core should return from this call within 20 msec.
-
- @param [in] hOutput
- Handle of the component to be accessed. Also this is the handle
- of the component whose port, specified in the nPortOutput parameter
- will be used the source for the tunnel. This is the component handle
- returned by the call to the OMX_GetHandle function. There is a
- requirement that hOutput be the source for the data when
- tunelling (i.e. nPortOutput is an output port). If 0x0, the component
- specified in hInput will have it's port specified in nPortInput
- setup for communication with the application / IL client.
- @param [in] nPortOutput
- nPortOutput is used to select the source port on component to be
- used in the tunnel.
- @param [in] hInput
- This is the component to setup the tunnel with. This is the handle
- of the component whose port, specified in the nPortInput parameter
- will be used the destination for the tunnel. This is the component handle
- returned by the call to the OMX_GetHandle function. There is a
- requirement that hInput be the destination for the data when
- tunelling (i.e. nPortInut is an input port). If 0x0, the component
- specified in hOutput will have it's port specified in nPortPOutput
- setup for communication with the application / IL client.
- @param [in] nPortInput
- nPortInput is used to select the destination port on component to be
- used in the tunnel.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- When OMX_ErrorNotImplemented is returned, one or both components is
- a non-interop component and does not support tunneling.
-
- On failure, the ports of both components are setup for communication
- with the application / IL Client.
- @ingroup core tun
- */
-OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_SetupTunnel(
- OMX_IN OMX_HANDLETYPE hOutput,
- OMX_IN OMX_U32 nPortOutput,
- OMX_IN OMX_HANDLETYPE hInput,
- OMX_IN OMX_U32 nPortInput);
-
-/** @ingroup cp */
-OMX_API OMX_ERRORTYPE OMX_GetContentPipe(
- OMX_OUT OMX_HANDLETYPE *hPipe,
- OMX_IN OMX_STRING szURI);
-
-/** The OMX_GetComponentsOfRole method will return the number of components that support the given
- role and (if the compNames field is non-NULL) the names of those components. The call will fail if
- an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the
- client should:
- * first call this function with the compNames field NULL to determine the number of component names
- * second call this function with the compNames field pointing to an array of names allocated
- according to the number returned by the first call.
-
- The core should return from this call within 5 msec.
-
- @param [in] role
- This is generic standard component name consisting only of component class
- name and the type within that class (e.g. 'audio_decoder.aac').
- @param [inout] pNumComps
- This is used both as input and output.
-
- If compNames is NULL, the input is ignored and the output specifies how many components support
- the given role.
-
- If compNames is not NULL, on input it bounds the size of the input structure and
- on output, it specifies the number of components string names listed within the compNames parameter.
- @param [inout] compNames
- If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings which accepts
- a list of the names of all physical components that implement the specified standard component name.
- Each name is NULL terminated. numComps indicates the number of names.
- @ingroup core
- */
-OMX_API OMX_ERRORTYPE OMX_GetComponentsOfRole (
- OMX_IN OMX_STRING role,
- OMX_INOUT OMX_U32 *pNumComps,
- OMX_INOUT OMX_U8 **compNames);
-
-/** The OMX_GetRolesOfComponent method will return the number of roles supported by the given
- component and (if the roles field is non-NULL) the names of those roles. The call will fail if
- an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the
- client should:
- * first call this function with the roles field NULL to determine the number of role names
- * second call this function with the roles field pointing to an array of names allocated
- according to the number returned by the first call.
-
- The core should return from this call within 5 msec.
-
- @param [in] compName
- This is the name of the component being queried about.
- @param [inout] pNumRoles
- This is used both as input and output.
-
- If roles is NULL, the input is ignored and the output specifies how many roles the component supports.
-
- If compNames is not NULL, on input it bounds the size of the input structure and
- on output, it specifies the number of roles string names listed within the roles parameter.
- @param [out] roles
- If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings
- which accepts a list of the names of all standard components roles implemented on the
- specified component name. numComps indicates the number of names.
- @ingroup core
- */
-OMX_API OMX_ERRORTYPE OMX_GetRolesOfComponent (
- OMX_IN OMX_STRING compName,
- OMX_INOUT OMX_U32 *pNumRoles,
- OMX_OUT OMX_U8 **roles);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
-
diff --git a/include/media/stagefright/openmax/OMX_IVCommon.h b/include/media/stagefright/openmax/OMX_IVCommon.h
deleted file mode 100644
index 8bb4ded..0000000
--- a/include/media/stagefright/openmax/OMX_IVCommon.h
+++ /dev/null
@@ -1,947 +0,0 @@
-/* ------------------------------------------------------------------
- * Copyright (C) 1998-2009 PacketVideo
- *
- * 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.
- * -------------------------------------------------------------------
- */
-/**
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/**
- * @file OMX_IVCommon.h - OpenMax IL version 1.1.2
- * The structures needed by Video and Image components to exchange
- * parameters and configuration data with the components.
- */
-#ifndef OMX_IVCommon_h
-#define OMX_IVCommon_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * Each OMX header must include all required header files to allow the header
- * to compile without errors. The includes below are required for this header
- * file to compile successfully
- */
-
-#include <OMX_Core.h>
-
-/** @defgroup iv OpenMAX IL Imaging and Video Domain
- * Common structures for OpenMAX IL Imaging and Video domains
- * @{
- */
-
-
-/**
- * Enumeration defining possible uncompressed image/video formats.
- *
- * ENUMS:
- * Unused : Placeholder value when format is N/A
- * Monochrome : black and white
- * 8bitRGB332 : Red 7:5, Green 4:2, Blue 1:0
- * 12bitRGB444 : Red 11:8, Green 7:4, Blue 3:0
- * 16bitARGB4444 : Alpha 15:12, Red 11:8, Green 7:4, Blue 3:0
- * 16bitARGB1555 : Alpha 15, Red 14:10, Green 9:5, Blue 4:0
- * 16bitRGB565 : Red 15:11, Green 10:5, Blue 4:0
- * 16bitBGR565 : Blue 15:11, Green 10:5, Red 4:0
- * 18bitRGB666 : Red 17:12, Green 11:6, Blue 5:0
- * 18bitARGB1665 : Alpha 17, Red 16:11, Green 10:5, Blue 4:0
- * 19bitARGB1666 : Alpha 18, Red 17:12, Green 11:6, Blue 5:0
- * 24bitRGB888 : Red 24:16, Green 15:8, Blue 7:0
- * 24bitBGR888 : Blue 24:16, Green 15:8, Red 7:0
- * 24bitARGB1887 : Alpha 23, Red 22:15, Green 14:7, Blue 6:0
- * 25bitARGB1888 : Alpha 24, Red 23:16, Green 15:8, Blue 7:0
- * 32bitBGRA8888 : Blue 31:24, Green 23:16, Red 15:8, Alpha 7:0
- * 32bitARGB8888 : Alpha 31:24, Red 23:16, Green 15:8, Blue 7:0
- * YUV411Planar : U,Y are subsampled by a factor of 4 horizontally
- * YUV411PackedPlanar : packed per payload in planar slices
- * YUV420Planar : Three arrays Y,U,V.
- * YUV420PackedPlanar : packed per payload in planar slices
- * YUV420SemiPlanar : Two arrays, one is all Y, the other is U and V
- * YUV422Planar : Three arrays Y,U,V.
- * YUV422PackedPlanar : packed per payload in planar slices
- * YUV422SemiPlanar : Two arrays, one is all Y, the other is U and V
- * YCbYCr : Organized as 16bit YUYV (i.e. YCbYCr)
- * YCrYCb : Organized as 16bit YVYU (i.e. YCrYCb)
- * CbYCrY : Organized as 16bit UYVY (i.e. CbYCrY)
- * CrYCbY : Organized as 16bit VYUY (i.e. CrYCbY)
- * YUV444Interleaved : Each pixel contains equal parts YUV
- * RawBayer8bit : SMIA camera output format
- * RawBayer10bit : SMIA camera output format
- * RawBayer8bitcompressed : SMIA camera output format
- */
-typedef enum OMX_COLOR_FORMATTYPE {
- OMX_COLOR_FormatUnused,
- OMX_COLOR_FormatMonochrome,
- OMX_COLOR_Format8bitRGB332,
- OMX_COLOR_Format12bitRGB444,
- OMX_COLOR_Format16bitARGB4444,
- OMX_COLOR_Format16bitARGB1555,
- OMX_COLOR_Format16bitRGB565,
- OMX_COLOR_Format16bitBGR565,
- OMX_COLOR_Format18bitRGB666,
- OMX_COLOR_Format18bitARGB1665,
- OMX_COLOR_Format19bitARGB1666,
- OMX_COLOR_Format24bitRGB888,
- OMX_COLOR_Format24bitBGR888,
- OMX_COLOR_Format24bitARGB1887,
- OMX_COLOR_Format25bitARGB1888,
- OMX_COLOR_Format32bitBGRA8888,
- OMX_COLOR_Format32bitARGB8888,
- OMX_COLOR_FormatYUV411Planar,
- OMX_COLOR_FormatYUV411PackedPlanar,
- OMX_COLOR_FormatYUV420Planar,
- OMX_COLOR_FormatYUV420PackedPlanar,
- OMX_COLOR_FormatYUV420SemiPlanar,
- OMX_COLOR_FormatYUV422Planar,
- OMX_COLOR_FormatYUV422PackedPlanar,
- OMX_COLOR_FormatYUV422SemiPlanar,
- OMX_COLOR_FormatYCbYCr,
- OMX_COLOR_FormatYCrYCb,
- OMX_COLOR_FormatCbYCrY,
- OMX_COLOR_FormatCrYCbY,
- OMX_COLOR_FormatYUV444Interleaved,
- OMX_COLOR_FormatRawBayer8bit,
- OMX_COLOR_FormatRawBayer10bit,
- OMX_COLOR_FormatRawBayer8bitcompressed,
- OMX_COLOR_FormatL2,
- OMX_COLOR_FormatL4,
- OMX_COLOR_FormatL8,
- OMX_COLOR_FormatL16,
- OMX_COLOR_FormatL24,
- OMX_COLOR_FormatL32,
- OMX_COLOR_FormatYUV420PackedSemiPlanar,
- OMX_COLOR_FormatYUV422PackedSemiPlanar,
- OMX_COLOR_Format18BitBGR666,
- OMX_COLOR_Format24BitARGB6666,
- OMX_COLOR_Format24BitABGR6666,
- OMX_COLOR_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_COLOR_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- /**<Reserved android opaque colorformat. Tells the encoder that
- * the actual colorformat will be relayed by the
- * Gralloc Buffers.
- * FIXME: In the process of reserving some enum values for
- * Android-specific OMX IL colorformats. Change this enum to
- * an acceptable range once that is done.
- * */
- OMX_COLOR_FormatAndroidOpaque = 0x7F000789,
- OMX_TI_COLOR_FormatYUV420PackedSemiPlanar = 0x7F000100,
- OMX_QCOM_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00,
- OMX_COLOR_FormatMax = 0x7FFFFFFF
-} OMX_COLOR_FORMATTYPE;
-
-
-/**
- * Defines the matrix for conversion from RGB to YUV or vice versa.
- * iColorMatrix should be initialized with the fixed point values
- * used in converting between formats.
- */
-typedef struct OMX_CONFIG_COLORCONVERSIONTYPE {
- OMX_U32 nSize; /**< Size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version info */
- OMX_U32 nPortIndex; /**< Port that this struct applies to */
- OMX_S32 xColorMatrix[3][3]; /**< Stored in signed Q16 format */
- OMX_S32 xColorOffset[4]; /**< Stored in signed Q16 format */
-}OMX_CONFIG_COLORCONVERSIONTYPE;
-
-
-/**
- * Structure defining percent to scale each frame dimension. For example:
- * To make the width 50% larger, use fWidth = 1.5 and to make the width
- * 1/2 the original size, use fWidth = 0.5
- */
-typedef struct OMX_CONFIG_SCALEFACTORTYPE {
- OMX_U32 nSize; /**< Size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version info */
- OMX_U32 nPortIndex; /**< Port that this struct applies to */
- OMX_S32 xWidth; /**< Fixed point value stored as Q16 */
- OMX_S32 xHeight; /**< Fixed point value stored as Q16 */
-}OMX_CONFIG_SCALEFACTORTYPE;
-
-
-/**
- * Enumeration of possible image filter types
- */
-typedef enum OMX_IMAGEFILTERTYPE {
- OMX_ImageFilterNone,
- OMX_ImageFilterNoise,
- OMX_ImageFilterEmboss,
- OMX_ImageFilterNegative,
- OMX_ImageFilterSketch,
- OMX_ImageFilterOilPaint,
- OMX_ImageFilterHatch,
- OMX_ImageFilterGpen,
- OMX_ImageFilterAntialias,
- OMX_ImageFilterDeRing,
- OMX_ImageFilterSolarize,
- OMX_ImageFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_ImageFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_ImageFilterMax = 0x7FFFFFFF
-} OMX_IMAGEFILTERTYPE;
-
-
-/**
- * Image filter configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eImageFilter : Image filter type enumeration
- */
-typedef struct OMX_CONFIG_IMAGEFILTERTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_IMAGEFILTERTYPE eImageFilter;
-} OMX_CONFIG_IMAGEFILTERTYPE;
-
-
-/**
- * Customized U and V for color enhancement
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * bColorEnhancement : Enable/disable color enhancement
- * nCustomizedU : Practical values: 16-240, range: 0-255, value set for
- * U component
- * nCustomizedV : Practical values: 16-240, range: 0-255, value set for
- * V component
- */
-typedef struct OMX_CONFIG_COLORENHANCEMENTTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bColorEnhancement;
- OMX_U8 nCustomizedU;
- OMX_U8 nCustomizedV;
-} OMX_CONFIG_COLORENHANCEMENTTYPE;
-
-
-/**
- * Define color key and color key mask
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nARGBColor : 32bit Alpha, Red, Green, Blue Color
- * nARGBMask : 32bit Mask for Alpha, Red, Green, Blue channels
- */
-typedef struct OMX_CONFIG_COLORKEYTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nARGBColor;
- OMX_U32 nARGBMask;
-} OMX_CONFIG_COLORKEYTYPE;
-
-
-/**
- * List of color blend types for pre/post processing
- *
- * ENUMS:
- * None : No color blending present
- * AlphaConstant : Function is (alpha_constant * src) +
- * (1 - alpha_constant) * dst)
- * AlphaPerPixel : Function is (alpha * src) + (1 - alpha) * dst)
- * Alternate : Function is alternating pixels from src and dst
- * And : Function is (src & dst)
- * Or : Function is (src | dst)
- * Invert : Function is ~src
- */
-typedef enum OMX_COLORBLENDTYPE {
- OMX_ColorBlendNone,
- OMX_ColorBlendAlphaConstant,
- OMX_ColorBlendAlphaPerPixel,
- OMX_ColorBlendAlternate,
- OMX_ColorBlendAnd,
- OMX_ColorBlendOr,
- OMX_ColorBlendInvert,
- OMX_ColorBlendKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_ColorBlendVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_ColorBlendMax = 0x7FFFFFFF
-} OMX_COLORBLENDTYPE;
-
-
-/**
- * Color blend configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nRGBAlphaConstant : Constant global alpha values when global alpha is used
- * eColorBlend : Color blend type enumeration
- */
-typedef struct OMX_CONFIG_COLORBLENDTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nRGBAlphaConstant;
- OMX_COLORBLENDTYPE eColorBlend;
-} OMX_CONFIG_COLORBLENDTYPE;
-
-
-/**
- * Hold frame dimension
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nWidth : Frame width in pixels
- * nHeight : Frame height in pixels
- */
-typedef struct OMX_FRAMESIZETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nWidth;
- OMX_U32 nHeight;
-} OMX_FRAMESIZETYPE;
-
-
-/**
- * Rotation configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nRotation : +/- integer rotation value
- */
-typedef struct OMX_CONFIG_ROTATIONTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_S32 nRotation;
-} OMX_CONFIG_ROTATIONTYPE;
-
-
-/**
- * Possible mirroring directions for pre/post processing
- *
- * ENUMS:
- * None : No mirroring
- * Vertical : Vertical mirroring, flip on X axis
- * Horizontal : Horizontal mirroring, flip on Y axis
- * Both : Both vertical and horizontal mirroring
- */
-typedef enum OMX_MIRRORTYPE {
- OMX_MirrorNone = 0,
- OMX_MirrorVertical,
- OMX_MirrorHorizontal,
- OMX_MirrorBoth,
- OMX_MirrorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_MirrorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_MirrorMax = 0x7FFFFFFF
-} OMX_MIRRORTYPE;
-
-
-/**
- * Mirroring configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eMirror : Mirror type enumeration
- */
-typedef struct OMX_CONFIG_MIRRORTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_MIRRORTYPE eMirror;
-} OMX_CONFIG_MIRRORTYPE;
-
-
-/**
- * Position information only
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nX : X coordinate for the point
- * nY : Y coordinate for the point
- */
-typedef struct OMX_CONFIG_POINTTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_S32 nX;
- OMX_S32 nY;
-} OMX_CONFIG_POINTTYPE;
-
-
-/**
- * Frame size plus position
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nLeft : X Coordinate of the top left corner of the rectangle
- * nTop : Y Coordinate of the top left corner of the rectangle
- * nWidth : Width of the rectangle
- * nHeight : Height of the rectangle
- */
-typedef struct OMX_CONFIG_RECTTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_S32 nLeft;
- OMX_S32 nTop;
- OMX_U32 nWidth;
- OMX_U32 nHeight;
-} OMX_CONFIG_RECTTYPE;
-
-
-/**
- * Deblocking state; it is required to be set up before starting the codec
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * bDeblocking : Enable/disable deblocking mode
- */
-typedef struct OMX_PARAM_DEBLOCKINGTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bDeblocking;
-} OMX_PARAM_DEBLOCKINGTYPE;
-
-
-/**
- * Stabilization state
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * bStab : Enable/disable frame stabilization state
- */
-typedef struct OMX_CONFIG_FRAMESTABTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bStab;
-} OMX_CONFIG_FRAMESTABTYPE;
-
-
-/**
- * White Balance control type
- *
- * STRUCT MEMBERS:
- * SunLight : Referenced in JSR-234
- * Flash : Optimal for device's integrated flash
- */
-typedef enum OMX_WHITEBALCONTROLTYPE {
- OMX_WhiteBalControlOff = 0,
- OMX_WhiteBalControlAuto,
- OMX_WhiteBalControlSunLight,
- OMX_WhiteBalControlCloudy,
- OMX_WhiteBalControlShade,
- OMX_WhiteBalControlTungsten,
- OMX_WhiteBalControlFluorescent,
- OMX_WhiteBalControlIncandescent,
- OMX_WhiteBalControlFlash,
- OMX_WhiteBalControlHorizon,
- OMX_WhiteBalControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_WhiteBalControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_WhiteBalControlMax = 0x7FFFFFFF
-} OMX_WHITEBALCONTROLTYPE;
-
-
-/**
- * White Balance control configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eWhiteBalControl : White balance enumeration
- */
-typedef struct OMX_CONFIG_WHITEBALCONTROLTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_WHITEBALCONTROLTYPE eWhiteBalControl;
-} OMX_CONFIG_WHITEBALCONTROLTYPE;
-
-
-/**
- * Exposure control type
- */
-typedef enum OMX_EXPOSURECONTROLTYPE {
- OMX_ExposureControlOff = 0,
- OMX_ExposureControlAuto,
- OMX_ExposureControlNight,
- OMX_ExposureControlBackLight,
- OMX_ExposureControlSpotLight,
- OMX_ExposureControlSports,
- OMX_ExposureControlSnow,
- OMX_ExposureControlBeach,
- OMX_ExposureControlLargeAperture,
- OMX_ExposureControlSmallApperture,
- OMX_ExposureControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_ExposureControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_ExposureControlMax = 0x7FFFFFFF
-} OMX_EXPOSURECONTROLTYPE;
-
-
-/**
- * White Balance control configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eExposureControl : Exposure control enumeration
- */
-typedef struct OMX_CONFIG_EXPOSURECONTROLTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_EXPOSURECONTROLTYPE eExposureControl;
-} OMX_CONFIG_EXPOSURECONTROLTYPE;
-
-
-/**
- * Defines sensor supported mode.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nFrameRate : Single shot mode is indicated by a 0
- * bOneShot : Enable for single shot, disable for streaming
- * sFrameSize : Framesize
- */
-typedef struct OMX_PARAM_SENSORMODETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nFrameRate;
- OMX_BOOL bOneShot;
- OMX_FRAMESIZETYPE sFrameSize;
-} OMX_PARAM_SENSORMODETYPE;
-
-
-/**
- * Defines contrast level
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nContrast : Values allowed for contrast -100 to 100, zero means no change
- */
-typedef struct OMX_CONFIG_CONTRASTTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_S32 nContrast;
-} OMX_CONFIG_CONTRASTTYPE;
-
-
-/**
- * Defines brightness level
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nBrightness : 0-100%
- */
-typedef struct OMX_CONFIG_BRIGHTNESSTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nBrightness;
-} OMX_CONFIG_BRIGHTNESSTYPE;
-
-
-/**
- * Defines backlight level configuration for a video sink, e.g. LCD panel
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nBacklight : Values allowed for backlight 0-100%
- * nTimeout : Number of milliseconds before backlight automatically turns
- * off. A value of 0x0 disables backight timeout
- */
-typedef struct OMX_CONFIG_BACKLIGHTTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nBacklight;
- OMX_U32 nTimeout;
-} OMX_CONFIG_BACKLIGHTTYPE;
-
-
-/**
- * Defines setting for Gamma
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nGamma : Values allowed for gamma -100 to 100, zero means no change
- */
-typedef struct OMX_CONFIG_GAMMATYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_S32 nGamma;
-} OMX_CONFIG_GAMMATYPE;
-
-
-/**
- * Define for setting saturation
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nSaturation : Values allowed for saturation -100 to 100, zero means
- * no change
- */
-typedef struct OMX_CONFIG_SATURATIONTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_S32 nSaturation;
-} OMX_CONFIG_SATURATIONTYPE;
-
-
-/**
- * Define for setting Lightness
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nLightness : Values allowed for lightness -100 to 100, zero means no
- * change
- */
-typedef struct OMX_CONFIG_LIGHTNESSTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_S32 nLightness;
-} OMX_CONFIG_LIGHTNESSTYPE;
-
-
-/**
- * Plane blend configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Index of input port associated with the plane.
- * nDepth : Depth of the plane in relation to the screen. Higher
- * numbered depths are "behind" lower number depths.
- * This number defaults to the Port Index number.
- * nAlpha : Transparency blending component for the entire plane.
- * See blending modes for more detail.
- */
-typedef struct OMX_CONFIG_PLANEBLENDTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nDepth;
- OMX_U32 nAlpha;
-} OMX_CONFIG_PLANEBLENDTYPE;
-
-
-/**
- * Define interlace type
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * bEnable : Enable control variable for this functionality
- * (see below)
- * nInterleavePortIndex : Index of input or output port associated with
- * the interleaved plane.
- * pPlanarPortIndexes[4] : Index of input or output planar ports.
- */
-typedef struct OMX_PARAM_INTERLEAVETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bEnable;
- OMX_U32 nInterleavePortIndex;
-} OMX_PARAM_INTERLEAVETYPE;
-
-
-/**
- * Defines the picture effect used for an input picture
- */
-typedef enum OMX_TRANSITIONEFFECTTYPE {
- OMX_EffectNone,
- OMX_EffectFadeFromBlack,
- OMX_EffectFadeToBlack,
- OMX_EffectUnspecifiedThroughConstantColor,
- OMX_EffectDissolve,
- OMX_EffectWipe,
- OMX_EffectUnspecifiedMixOfTwoScenes,
- OMX_EffectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_EffectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_EffectMax = 0x7FFFFFFF
-} OMX_TRANSITIONEFFECTTYPE;
-
-
-/**
- * Structure used to configure current transition effect
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eEffect : Effect to enable
- */
-typedef struct OMX_CONFIG_TRANSITIONEFFECTTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_TRANSITIONEFFECTTYPE eEffect;
-} OMX_CONFIG_TRANSITIONEFFECTTYPE;
-
-
-/**
- * Defines possible data unit types for encoded video data. The data unit
- * types are used both for encoded video input for playback as well as
- * encoded video output from recording.
- */
-typedef enum OMX_DATAUNITTYPE {
- OMX_DataUnitCodedPicture,
- OMX_DataUnitVideoSegment,
- OMX_DataUnitSeveralSegments,
- OMX_DataUnitArbitraryStreamSection,
- OMX_DataUnitKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_DataUnitVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_DataUnitMax = 0x7FFFFFFF
-} OMX_DATAUNITTYPE;
-
-
-/**
- * Defines possible encapsulation types for coded video data unit. The
- * encapsulation information is used both for encoded video input for
- * playback as well as encoded video output from recording.
- */
-typedef enum OMX_DATAUNITENCAPSULATIONTYPE {
- OMX_DataEncapsulationElementaryStream,
- OMX_DataEncapsulationGenericPayload,
- OMX_DataEncapsulationRtpPayload,
- OMX_DataEncapsulationKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_DataEncapsulationVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_DataEncapsulationMax = 0x7FFFFFFF
-} OMX_DATAUNITENCAPSULATIONTYPE;
-
-
-/**
- * Structure used to configure the type of being decoded/encoded
- */
-typedef struct OMX_PARAM_DATAUNITTYPE {
- OMX_U32 nSize; /**< Size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port that this structure applies to */
- OMX_DATAUNITTYPE eUnitType;
- OMX_DATAUNITENCAPSULATIONTYPE eEncapsulationType;
-} OMX_PARAM_DATAUNITTYPE;
-
-
-/**
- * Defines dither types
- */
-typedef enum OMX_DITHERTYPE {
- OMX_DitherNone,
- OMX_DitherOrdered,
- OMX_DitherErrorDiffusion,
- OMX_DitherOther,
- OMX_DitherKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_DitherVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_DitherMax = 0x7FFFFFFF
-} OMX_DITHERTYPE;
-
-
-/**
- * Structure used to configure current type of dithering
- */
-typedef struct OMX_CONFIG_DITHERTYPE {
- OMX_U32 nSize; /**< Size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port that this structure applies to */
- OMX_DITHERTYPE eDither; /**< Type of dithering to use */
-} OMX_CONFIG_DITHERTYPE;
-
-typedef struct OMX_CONFIG_CAPTUREMODETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex; /**< Port that this structure applies to */
- OMX_BOOL bContinuous; /**< If true then ignore frame rate and emit capture
- * data as fast as possible (otherwise obey port's frame rate). */
- OMX_BOOL bFrameLimited; /**< If true then terminate capture after the port emits the
- * specified number of frames (otherwise the port does not
- * terminate the capture until instructed to do so by the client).
- * Even if set, the client may manually terminate the capture prior
- * to reaching the limit. */
- OMX_U32 nFrameLimit; /**< Limit on number of frames emitted during a capture (only
- * valid if bFrameLimited is set). */
-} OMX_CONFIG_CAPTUREMODETYPE;
-
-typedef enum OMX_METERINGTYPE {
-
- OMX_MeteringModeAverage, /**< Center-weighted average metering. */
- OMX_MeteringModeSpot, /**< Spot (partial) metering. */
- OMX_MeteringModeMatrix, /**< Matrix or evaluative metering. */
-
- OMX_MeteringKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_MeteringVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_EVModeMax = 0x7fffffff
-} OMX_METERINGTYPE;
-
-typedef struct OMX_CONFIG_EXPOSUREVALUETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_METERINGTYPE eMetering;
- OMX_S32 xEVCompensation; /**< Fixed point value stored as Q16 */
- OMX_U32 nApertureFNumber; /**< e.g. nApertureFNumber = 2 implies "f/2" - Q16 format */
- OMX_BOOL bAutoAperture; /**< Whether aperture number is defined automatically */
- OMX_U32 nShutterSpeedMsec; /**< Shutterspeed in milliseconds */
- OMX_BOOL bAutoShutterSpeed; /**< Whether shutter speed is defined automatically */
- OMX_U32 nSensitivity; /**< e.g. nSensitivity = 100 implies "ISO 100" */
- OMX_BOOL bAutoSensitivity; /**< Whether sensitivity is defined automatically */
-} OMX_CONFIG_EXPOSUREVALUETYPE;
-
-/**
- * Focus region configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * bCenter : Use center region as focus region of interest
- * bLeft : Use left region as focus region of interest
- * bRight : Use right region as focus region of interest
- * bTop : Use top region as focus region of interest
- * bBottom : Use bottom region as focus region of interest
- * bTopLeft : Use top left region as focus region of interest
- * bTopRight : Use top right region as focus region of interest
- * bBottomLeft : Use bottom left region as focus region of interest
- * bBottomRight : Use bottom right region as focus region of interest
- */
-typedef struct OMX_CONFIG_FOCUSREGIONTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bCenter;
- OMX_BOOL bLeft;
- OMX_BOOL bRight;
- OMX_BOOL bTop;
- OMX_BOOL bBottom;
- OMX_BOOL bTopLeft;
- OMX_BOOL bTopRight;
- OMX_BOOL bBottomLeft;
- OMX_BOOL bBottomRight;
-} OMX_CONFIG_FOCUSREGIONTYPE;
-
-/**
- * Focus Status type
- */
-typedef enum OMX_FOCUSSTATUSTYPE {
- OMX_FocusStatusOff = 0,
- OMX_FocusStatusRequest,
- OMX_FocusStatusReached,
- OMX_FocusStatusUnableToReach,
- OMX_FocusStatusLost,
- OMX_FocusStatusKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_FocusStatusVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_FocusStatusMax = 0x7FFFFFFF
-} OMX_FOCUSSTATUSTYPE;
-
-/**
- * Focus status configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eFocusStatus : Specifies the focus status
- * bCenterStatus : Use center region as focus region of interest
- * bLeftStatus : Use left region as focus region of interest
- * bRightStatus : Use right region as focus region of interest
- * bTopStatus : Use top region as focus region of interest
- * bBottomStatus : Use bottom region as focus region of interest
- * bTopLeftStatus : Use top left region as focus region of interest
- * bTopRightStatus : Use top right region as focus region of interest
- * bBottomLeftStatus : Use bottom left region as focus region of interest
- * bBottomRightStatus : Use bottom right region as focus region of interest
- */
-typedef struct OMX_PARAM_FOCUSSTATUSTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_FOCUSSTATUSTYPE eFocusStatus;
- OMX_BOOL bCenterStatus;
- OMX_BOOL bLeftStatus;
- OMX_BOOL bRightStatus;
- OMX_BOOL bTopStatus;
- OMX_BOOL bBottomStatus;
- OMX_BOOL bTopLeftStatus;
- OMX_BOOL bTopRightStatus;
- OMX_BOOL bBottomLeftStatus;
- OMX_BOOL bBottomRightStatus;
-} OMX_PARAM_FOCUSSTATUSTYPE;
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
diff --git a/include/media/stagefright/openmax/OMX_Image.h b/include/media/stagefright/openmax/OMX_Image.h
deleted file mode 100644
index 42e39ec..0000000
--- a/include/media/stagefright/openmax/OMX_Image.h
+++ /dev/null
@@ -1,345 +0,0 @@
-/* ------------------------------------------------------------------
- * Copyright (C) 1998-2009 PacketVideo
- *
- * 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.
- * -------------------------------------------------------------------
- */
-/**
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * @file OMX_Image.h - OpenMax IL version 1.1.2
- * The structures needed by Image components to exchange parameters and
- * configuration data with the components.
- */
-#ifndef OMX_Image_h
-#define OMX_Image_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/**
- * Each OMX header must include all required header files to allow the
- * header to compile without errors. The includes below are required
- * for this header file to compile successfully
- */
-
-#include <OMX_IVCommon.h>
-
-/** @defgroup imaging OpenMAX IL Imaging Domain
- * @ingroup iv
- * Structures for OpenMAX IL Imaging domain
- * @{
- */
-
-/**
- * Enumeration used to define the possible image compression coding.
- */
-typedef enum OMX_IMAGE_CODINGTYPE {
- OMX_IMAGE_CodingUnused, /**< Value when format is N/A */
- OMX_IMAGE_CodingAutoDetect, /**< Auto detection of image format */
- OMX_IMAGE_CodingJPEG, /**< JPEG/JFIF image format */
- OMX_IMAGE_CodingJPEG2K, /**< JPEG 2000 image format */
- OMX_IMAGE_CodingEXIF, /**< EXIF image format */
- OMX_IMAGE_CodingTIFF, /**< TIFF image format */
- OMX_IMAGE_CodingGIF, /**< Graphics image format */
- OMX_IMAGE_CodingPNG, /**< PNG image format */
- OMX_IMAGE_CodingLZW, /**< LZW image format */
- OMX_IMAGE_CodingBMP, /**< Windows Bitmap format */
- OMX_IMAGE_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_IMAGE_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_IMAGE_CodingMax = 0x7FFFFFFF
-} OMX_IMAGE_CODINGTYPE;
-
-
-/**
- * Data structure used to define an image path. The number of image paths
- * for input and output will vary by type of the image component.
- *
- * Input (aka Source) : Zero Inputs, one Output,
- * Splitter : One Input, 2 or more Outputs,
- * Processing Element : One Input, one output,
- * Mixer : 2 or more inputs, one output,
- * Output (aka Sink) : One Input, zero outputs.
- *
- * The PortDefinition structure is used to define all of the parameters
- * necessary for the compliant component to setup an input or an output
- * image path. If additional vendor specific data is required, it should
- * be transmitted to the component using the CustomCommand function.
- * Compliant components will prepopulate this structure with optimal
- * values during the OMX_GetParameter() command.
- *
- * STRUCT MEMBERS:
- * cMIMEType : MIME type of data for the port
- * pNativeRender : Platform specific reference for a display if a
- * sync, otherwise this field is 0
- * nFrameWidth : Width of frame to be used on port if
- * uncompressed format is used. Use 0 for
- * unknown, don't care or variable
- * nFrameHeight : Height of frame to be used on port if
- * uncompressed format is used. Use 0 for
- * unknown, don't care or variable
- * nStride : Number of bytes per span of an image (i.e.
- * indicates the number of bytes to get from
- * span N to span N+1, where negative stride
- * indicates the image is bottom up
- * nSliceHeight : Height used when encoding in slices
- * bFlagErrorConcealment : Turns on error concealment if it is supported by
- * the OMX component
- * eCompressionFormat : Compression format used in this instance of
- * the component. When OMX_IMAGE_CodingUnused is
- * specified, eColorFormat is valid
- * eColorFormat : Decompressed format used by this component
- * pNativeWindow : Platform specific reference for a window object if a
- * display sink , otherwise this field is 0x0.
- */
-typedef struct OMX_IMAGE_PORTDEFINITIONTYPE {
- OMX_STRING cMIMEType;
- OMX_NATIVE_DEVICETYPE pNativeRender;
- OMX_U32 nFrameWidth;
- OMX_U32 nFrameHeight;
- OMX_S32 nStride;
- OMX_U32 nSliceHeight;
- OMX_BOOL bFlagErrorConcealment;
- OMX_IMAGE_CODINGTYPE eCompressionFormat;
- OMX_COLOR_FORMATTYPE eColorFormat;
- OMX_NATIVE_WINDOWTYPE pNativeWindow;
-} OMX_IMAGE_PORTDEFINITIONTYPE;
-
-
-/**
- * Port format parameter. This structure is used to enumerate the various
- * data input/output format supported by the port.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Indicates which port to set
- * nIndex : Indicates the enumeration index for the format from
- * 0x0 to N-1
- * eCompressionFormat : Compression format used in this instance of the
- * component. When OMX_IMAGE_CodingUnused is specified,
- * eColorFormat is valid
- * eColorFormat : Decompressed format used by this component
- */
-typedef struct OMX_IMAGE_PARAM_PORTFORMATTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nIndex;
- OMX_IMAGE_CODINGTYPE eCompressionFormat;
- OMX_COLOR_FORMATTYPE eColorFormat;
-} OMX_IMAGE_PARAM_PORTFORMATTYPE;
-
-
-/**
- * Flash control type
- *
- * ENUMS
- * Torch : Flash forced constantly on
- */
-typedef enum OMX_IMAGE_FLASHCONTROLTYPE {
- OMX_IMAGE_FlashControlOn = 0,
- OMX_IMAGE_FlashControlOff,
- OMX_IMAGE_FlashControlAuto,
- OMX_IMAGE_FlashControlRedEyeReduction,
- OMX_IMAGE_FlashControlFillin,
- OMX_IMAGE_FlashControlTorch,
- OMX_IMAGE_FlashControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_IMAGE_FlashControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_IMAGE_FlashControlMax = 0x7FFFFFFF
-} OMX_IMAGE_FLASHCONTROLTYPE;
-
-
-/**
- * Flash control configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eFlashControl : Flash control type
- */
-typedef struct OMX_IMAGE_PARAM_FLASHCONTROLTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_IMAGE_FLASHCONTROLTYPE eFlashControl;
-} OMX_IMAGE_PARAM_FLASHCONTROLTYPE;
-
-
-/**
- * Focus control type
- */
-typedef enum OMX_IMAGE_FOCUSCONTROLTYPE {
- OMX_IMAGE_FocusControlOn = 0,
- OMX_IMAGE_FocusControlOff,
- OMX_IMAGE_FocusControlAuto,
- OMX_IMAGE_FocusControlAutoLock,
- OMX_IMAGE_FocusControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_IMAGE_FocusControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_IMAGE_FocusControlMax = 0x7FFFFFFF
-} OMX_IMAGE_FOCUSCONTROLTYPE;
-
-
-/**
- * Focus control configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eFocusControl : Focus control
- * nFocusSteps : Focus can take on values from 0 mm to infinity.
- * Interest is only in number of steps over this range.
- * nFocusStepIndex : Current focus step index
- */
-typedef struct OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_IMAGE_FOCUSCONTROLTYPE eFocusControl;
- OMX_U32 nFocusSteps;
- OMX_U32 nFocusStepIndex;
-} OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE;
-
-
-/**
- * Q Factor for JPEG compression, which controls the tradeoff between image
- * quality and size. Q Factor provides a more simple means of controlling
- * JPEG compression quality, without directly programming Quantization
- * tables for chroma and luma
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nQFactor : JPEG Q factor value in the range of 1-100. A factor of 1
- * produces the smallest, worst quality images, and a factor
- * of 100 produces the largest, best quality images. A
- * typical default is 75 for small good quality images
- */
-typedef struct OMX_IMAGE_PARAM_QFACTORTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nQFactor;
-} OMX_IMAGE_PARAM_QFACTORTYPE;
-
-/**
- * Quantization table type
- */
-
-typedef enum OMX_IMAGE_QUANTIZATIONTABLETYPE {
- OMX_IMAGE_QuantizationTableLuma = 0,
- OMX_IMAGE_QuantizationTableChroma,
- OMX_IMAGE_QuantizationTableChromaCb,
- OMX_IMAGE_QuantizationTableChromaCr,
- OMX_IMAGE_QuantizationTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_IMAGE_QuantizationTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_IMAGE_QuantizationTableMax = 0x7FFFFFFF
-} OMX_IMAGE_QUANTIZATIONTABLETYPE;
-
-/**
- * JPEG quantization tables are used to determine DCT compression for
- * YUV data, as an alternative to specifying Q factor, providing exact
- * control of compression
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eQuantizationTable : Quantization table type
- * nQuantizationMatrix[64] : JPEG quantization table of coefficients stored
- * in increasing columns then by rows of data (i.e.
- * row 1, ... row 8). Quantization values are in
- * the range 0-255 and stored in linear order
- * (i.e. the component will zig-zag the
- * quantization table data if required internally)
- */
-typedef struct OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_IMAGE_QUANTIZATIONTABLETYPE eQuantizationTable;
- OMX_U8 nQuantizationMatrix[64];
-} OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE;
-
-
-/**
- * Huffman table type, the same Huffman table is applied for chroma and
- * luma component
- */
-typedef enum OMX_IMAGE_HUFFMANTABLETYPE {
- OMX_IMAGE_HuffmanTableAC = 0,
- OMX_IMAGE_HuffmanTableDC,
- OMX_IMAGE_HuffmanTableACLuma,
- OMX_IMAGE_HuffmanTableACChroma,
- OMX_IMAGE_HuffmanTableDCLuma,
- OMX_IMAGE_HuffmanTableDCChroma,
- OMX_IMAGE_HuffmanTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_IMAGE_HuffmanTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_IMAGE_HuffmanTableMax = 0x7FFFFFFF
-} OMX_IMAGE_HUFFMANTABLETYPE;
-
-/**
- * JPEG Huffman table
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eHuffmanTable : Huffman table type
- * nNumberOfHuffmanCodeOfLength[16] : 0-16, number of Huffman codes of each
- * possible length
- * nHuffmanTable[256] : 0-255, the size used for AC and DC
- * HuffmanTable are 16 and 162
- */
-typedef struct OMX_IMAGE_PARAM_HUFFMANTTABLETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_IMAGE_HUFFMANTABLETYPE eHuffmanTable;
- OMX_U8 nNumberOfHuffmanCodeOfLength[16];
- OMX_U8 nHuffmanTable[256];
-}OMX_IMAGE_PARAM_HUFFMANTTABLETYPE;
-
-/** @} */
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
diff --git a/include/media/stagefright/openmax/OMX_Index.h b/include/media/stagefright/openmax/OMX_Index.h
deleted file mode 100644
index c0b8d92..0000000
--- a/include/media/stagefright/openmax/OMX_Index.h
+++ /dev/null
@@ -1,275 +0,0 @@
-/* ------------------------------------------------------------------
- * Copyright (C) 1998-2009 PacketVideo
- *
- * 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.
- * -------------------------------------------------------------------
- */
-/*
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/** @file OMX_Index.h - OpenMax IL version 1.1.2
- * The OMX_Index header file contains the definitions for both applications
- * and components .
- */
-
-
-#ifndef OMX_Index_h
-#define OMX_Index_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/* Each OMX header must include all required header files to allow the
- * header to compile without errors. The includes below are required
- * for this header file to compile successfully
- */
-#include <OMX_Types.h>
-
-
-/** The OMX_INDEXTYPE enumeration is used to select a structure when either
- * getting or setting parameters and/or configuration data. Each entry in
- * this enumeration maps to an OMX specified structure. When the
- * OMX_GetParameter, OMX_SetParameter, OMX_GetConfig or OMX_SetConfig methods
- * are used, the second parameter will always be an entry from this enumeration
- * and the third entry will be the structure shown in the comments for the entry.
- * For example, if the application is initializing a cropping function, the
- * OMX_SetConfig command would have OMX_IndexConfigCommonInputCrop as the second parameter
- * and would send a pointer to an initialized OMX_RECTTYPE structure as the
- * third parameter.
- *
- * The enumeration entries named with the OMX_Config prefix are sent using
- * the OMX_SetConfig command and the enumeration entries named with the
- * OMX_PARAM_ prefix are sent using the OMX_SetParameter command.
- */
-typedef enum OMX_INDEXTYPE {
-
- OMX_IndexComponentStartUnused = 0x01000000,
- OMX_IndexParamPriorityMgmt, /**< reference: OMX_PRIORITYMGMTTYPE */
- OMX_IndexParamAudioInit, /**< reference: OMX_PORT_PARAM_TYPE */
- OMX_IndexParamImageInit, /**< reference: OMX_PORT_PARAM_TYPE */
- OMX_IndexParamVideoInit, /**< reference: OMX_PORT_PARAM_TYPE */
- OMX_IndexParamOtherInit, /**< reference: OMX_PORT_PARAM_TYPE */
- OMX_IndexParamNumAvailableStreams, /**< reference: OMX_PARAM_U32TYPE */
- OMX_IndexParamActiveStream, /**< reference: OMX_PARAM_U32TYPE */
- OMX_IndexParamSuspensionPolicy, /**< reference: OMX_PARAM_SUSPENSIONPOLICYTYPE */
- OMX_IndexParamComponentSuspended, /**< reference: OMX_PARAM_SUSPENSIONTYPE */
- OMX_IndexConfigCapturing, /**< reference: OMX_CONFIG_BOOLEANTYPE */
- OMX_IndexConfigCaptureMode, /**< reference: OMX_CONFIG_CAPTUREMODETYPE */
- OMX_IndexAutoPauseAfterCapture, /**< reference: OMX_CONFIG_BOOLEANTYPE */
- OMX_IndexParamContentURI, /**< reference: OMX_PARAM_CONTENTURITYPE */
- OMX_IndexParamCustomContentPipe, /**< reference: OMX_PARAM_CONTENTPIPETYPE */
- OMX_IndexParamDisableResourceConcealment, /**< reference: OMX_RESOURCECONCEALMENTTYPE */
- OMX_IndexConfigMetadataItemCount, /**< reference: OMX_CONFIG_METADATAITEMCOUNTTYPE */
- OMX_IndexConfigContainerNodeCount, /**< reference: OMX_CONFIG_CONTAINERNODECOUNTTYPE */
- OMX_IndexConfigMetadataItem, /**< reference: OMX_CONFIG_METADATAITEMTYPE */
- OMX_IndexConfigCounterNodeID, /**< reference: OMX_CONFIG_CONTAINERNODEIDTYPE */
- OMX_IndexParamMetadataFilterType, /**< reference: OMX_PARAM_METADATAFILTERTYPE */
- OMX_IndexParamMetadataKeyFilter, /**< reference: OMX_PARAM_METADATAFILTERTYPE */
- OMX_IndexConfigPriorityMgmt, /**< reference: OMX_PRIORITYMGMTTYPE */
- OMX_IndexParamStandardComponentRole, /**< reference: OMX_PARAM_COMPONENTROLETYPE */
-
- OMX_IndexPortStartUnused = 0x02000000,
- OMX_IndexParamPortDefinition, /**< reference: OMX_PARAM_PORTDEFINITIONTYPE */
- OMX_IndexParamCompBufferSupplier, /**< reference: OMX_PARAM_BUFFERSUPPLIERTYPE */
- OMX_IndexReservedStartUnused = 0x03000000,
-
- /* Audio parameters and configurations */
- OMX_IndexAudioStartUnused = 0x04000000,
- OMX_IndexParamAudioPortFormat, /**< reference: OMX_AUDIO_PARAM_PORTFORMATTYPE */
- OMX_IndexParamAudioPcm, /**< reference: OMX_AUDIO_PARAM_PCMMODETYPE */
- OMX_IndexParamAudioAac, /**< reference: OMX_AUDIO_PARAM_AACPROFILETYPE */
- OMX_IndexParamAudioRa, /**< reference: OMX_AUDIO_PARAM_RATYPE */
- OMX_IndexParamAudioMp3, /**< reference: OMX_AUDIO_PARAM_MP3TYPE */
- OMX_IndexParamAudioAdpcm, /**< reference: OMX_AUDIO_PARAM_ADPCMTYPE */
- OMX_IndexParamAudioG723, /**< reference: OMX_AUDIO_PARAM_G723TYPE */
- OMX_IndexParamAudioG729, /**< reference: OMX_AUDIO_PARAM_G729TYPE */
- OMX_IndexParamAudioAmr, /**< reference: OMX_AUDIO_PARAM_AMRTYPE */
- OMX_IndexParamAudioWma, /**< reference: OMX_AUDIO_PARAM_WMATYPE */
- OMX_IndexParamAudioSbc, /**< reference: OMX_AUDIO_PARAM_SBCTYPE */
- OMX_IndexParamAudioMidi, /**< reference: OMX_AUDIO_PARAM_MIDITYPE */
- OMX_IndexParamAudioGsm_FR, /**< reference: OMX_AUDIO_PARAM_GSMFRTYPE */
- OMX_IndexParamAudioMidiLoadUserSound, /**< reference: OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE */
- OMX_IndexParamAudioG726, /**< reference: OMX_AUDIO_PARAM_G726TYPE */
- OMX_IndexParamAudioGsm_EFR, /**< reference: OMX_AUDIO_PARAM_GSMEFRTYPE */
- OMX_IndexParamAudioGsm_HR, /**< reference: OMX_AUDIO_PARAM_GSMHRTYPE */
- OMX_IndexParamAudioPdc_FR, /**< reference: OMX_AUDIO_PARAM_PDCFRTYPE */
- OMX_IndexParamAudioPdc_EFR, /**< reference: OMX_AUDIO_PARAM_PDCEFRTYPE */
- OMX_IndexParamAudioPdc_HR, /**< reference: OMX_AUDIO_PARAM_PDCHRTYPE */
- OMX_IndexParamAudioTdma_FR, /**< reference: OMX_AUDIO_PARAM_TDMAFRTYPE */
- OMX_IndexParamAudioTdma_EFR, /**< reference: OMX_AUDIO_PARAM_TDMAEFRTYPE */
- OMX_IndexParamAudioQcelp8, /**< reference: OMX_AUDIO_PARAM_QCELP8TYPE */
- OMX_IndexParamAudioQcelp13, /**< reference: OMX_AUDIO_PARAM_QCELP13TYPE */
- OMX_IndexParamAudioEvrc, /**< reference: OMX_AUDIO_PARAM_EVRCTYPE */
- OMX_IndexParamAudioSmv, /**< reference: OMX_AUDIO_PARAM_SMVTYPE */
- OMX_IndexParamAudioVorbis, /**< reference: OMX_AUDIO_PARAM_VORBISTYPE */
-
- OMX_IndexConfigAudioMidiImmediateEvent, /**< reference: OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE */
- OMX_IndexConfigAudioMidiControl, /**< reference: OMX_AUDIO_CONFIG_MIDICONTROLTYPE */
- OMX_IndexConfigAudioMidiSoundBankProgram, /**< reference: OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE */
- OMX_IndexConfigAudioMidiStatus, /**< reference: OMX_AUDIO_CONFIG_MIDISTATUSTYPE */
- OMX_IndexConfigAudioMidiMetaEvent, /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE */
- OMX_IndexConfigAudioMidiMetaEventData, /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE */
- OMX_IndexConfigAudioVolume, /**< reference: OMX_AUDIO_CONFIG_VOLUMETYPE */
- OMX_IndexConfigAudioBalance, /**< reference: OMX_AUDIO_CONFIG_BALANCETYPE */
- OMX_IndexConfigAudioChannelMute, /**< reference: OMX_AUDIO_CONFIG_CHANNELMUTETYPE */
- OMX_IndexConfigAudioMute, /**< reference: OMX_AUDIO_CONFIG_MUTETYPE */
- OMX_IndexConfigAudioLoudness, /**< reference: OMX_AUDIO_CONFIG_LOUDNESSTYPE */
- OMX_IndexConfigAudioEchoCancelation, /**< reference: OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE */
- OMX_IndexConfigAudioNoiseReduction, /**< reference: OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE */
- OMX_IndexConfigAudioBass, /**< reference: OMX_AUDIO_CONFIG_BASSTYPE */
- OMX_IndexConfigAudioTreble, /**< reference: OMX_AUDIO_CONFIG_TREBLETYPE */
- OMX_IndexConfigAudioStereoWidening, /**< reference: OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE */
- OMX_IndexConfigAudioChorus, /**< reference: OMX_AUDIO_CONFIG_CHORUSTYPE */
- OMX_IndexConfigAudioEqualizer, /**< reference: OMX_AUDIO_CONFIG_EQUALIZERTYPE */
- OMX_IndexConfigAudioReverberation, /**< reference: OMX_AUDIO_CONFIG_REVERBERATIONTYPE */
- OMX_IndexConfigAudioChannelVolume, /**< reference: OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE */
-
- /* Image specific parameters and configurations */
- OMX_IndexImageStartUnused = 0x05000000,
- OMX_IndexParamImagePortFormat, /**< reference: OMX_IMAGE_PARAM_PORTFORMATTYPE */
- OMX_IndexParamFlashControl, /**< reference: OMX_IMAGE_PARAM_FLASHCONTROLTYPE */
- OMX_IndexConfigFocusControl, /**< reference: OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE */
- OMX_IndexParamQFactor, /**< reference: OMX_IMAGE_PARAM_QFACTORTYPE */
- OMX_IndexParamQuantizationTable, /**< reference: OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE */
- OMX_IndexParamHuffmanTable, /**< reference: OMX_IMAGE_PARAM_HUFFMANTTABLETYPE */
- OMX_IndexConfigFlashControl, /**< reference: OMX_IMAGE_PARAM_FLASHCONTROLTYPE */
-
- /* Video specific parameters and configurations */
- OMX_IndexVideoStartUnused = 0x06000000,
- OMX_IndexParamVideoPortFormat, /**< reference: OMX_VIDEO_PARAM_PORTFORMATTYPE */
- OMX_IndexParamVideoQuantization, /**< reference: OMX_VIDEO_PARAM_QUANTIZATIONTYPE */
- OMX_IndexParamVideoFastUpdate, /**< reference: OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE */
- OMX_IndexParamVideoBitrate, /**< reference: OMX_VIDEO_PARAM_BITRATETYPE */
- OMX_IndexParamVideoMotionVector, /**< reference: OMX_VIDEO_PARAM_MOTIONVECTORTYPE */
- OMX_IndexParamVideoIntraRefresh, /**< reference: OMX_VIDEO_PARAM_INTRAREFRESHTYPE */
- OMX_IndexParamVideoErrorCorrection, /**< reference: OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE */
- OMX_IndexParamVideoVBSMC, /**< reference: OMX_VIDEO_PARAM_VBSMCTYPE */
- OMX_IndexParamVideoMpeg2, /**< reference: OMX_VIDEO_PARAM_MPEG2TYPE */
- OMX_IndexParamVideoMpeg4, /**< reference: OMX_VIDEO_PARAM_MPEG4TYPE */
- OMX_IndexParamVideoWmv, /**< reference: OMX_VIDEO_PARAM_WMVTYPE */
- OMX_IndexParamVideoRv, /**< reference: OMX_VIDEO_PARAM_RVTYPE */
- OMX_IndexParamVideoAvc, /**< reference: OMX_VIDEO_PARAM_AVCTYPE */
- OMX_IndexParamVideoH263, /**< reference: OMX_VIDEO_PARAM_H263TYPE */
- OMX_IndexParamVideoProfileLevelQuerySupported, /**< reference: OMX_VIDEO_PARAM_PROFILELEVELTYPE */
- OMX_IndexParamVideoProfileLevelCurrent, /**< reference: OMX_VIDEO_PARAM_PROFILELEVELTYPE */
- OMX_IndexConfigVideoBitrate, /**< reference: OMX_VIDEO_CONFIG_BITRATETYPE */
- OMX_IndexConfigVideoFramerate, /**< reference: OMX_CONFIG_FRAMERATETYPE */
- OMX_IndexConfigVideoIntraVOPRefresh, /**< reference: OMX_CONFIG_INTRAREFRESHVOPTYPE */
- OMX_IndexConfigVideoIntraMBRefresh, /**< reference: OMX_CONFIG_MACROBLOCKERRORMAPTYPE */
- OMX_IndexConfigVideoMBErrorReporting, /**< reference: OMX_CONFIG_MBERRORREPORTINGTYPE */
- OMX_IndexParamVideoMacroblocksPerFrame, /**< reference: OMX_PARAM_MACROBLOCKSTYPE */
- OMX_IndexConfigVideoMacroBlockErrorMap, /**< reference: OMX_CONFIG_MACROBLOCKERRORMAPTYPE */
- OMX_IndexParamVideoSliceFMO, /**< reference: OMX_VIDEO_PARAM_AVCSLICEFMO */
- OMX_IndexConfigVideoAVCIntraPeriod, /**< reference: OMX_VIDEO_CONFIG_AVCINTRAPERIOD */
- OMX_IndexConfigVideoNalSize, /**< reference: OMX_VIDEO_CONFIG_NALSIZE */
-
- /* Image & Video common Configurations */
- OMX_IndexCommonStartUnused = 0x07000000,
- OMX_IndexParamCommonDeblocking, /**< reference: OMX_PARAM_DEBLOCKINGTYPE */
- OMX_IndexParamCommonSensorMode, /**< reference: OMX_PARAM_SENSORMODETYPE */
- OMX_IndexParamCommonInterleave, /**< reference: OMX_PARAM_INTERLEAVETYPE */
- OMX_IndexConfigCommonColorFormatConversion, /**< reference: OMX_CONFIG_COLORCONVERSIONTYPE */
- OMX_IndexConfigCommonScale, /**< reference: OMX_CONFIG_SCALEFACTORTYPE */
- OMX_IndexConfigCommonImageFilter, /**< reference: OMX_CONFIG_IMAGEFILTERTYPE */
- OMX_IndexConfigCommonColorEnhancement, /**< reference: OMX_CONFIG_COLORENHANCEMENTTYPE */
- OMX_IndexConfigCommonColorKey, /**< reference: OMX_CONFIG_COLORKEYTYPE */
- OMX_IndexConfigCommonColorBlend, /**< reference: OMX_CONFIG_COLORBLENDTYPE */
- OMX_IndexConfigCommonFrameStabilisation,/**< reference: OMX_CONFIG_FRAMESTABTYPE */
- OMX_IndexConfigCommonRotate, /**< reference: OMX_CONFIG_ROTATIONTYPE */
- OMX_IndexConfigCommonMirror, /**< reference: OMX_CONFIG_MIRRORTYPE */
- OMX_IndexConfigCommonOutputPosition, /**< reference: OMX_CONFIG_POINTTYPE */
- OMX_IndexConfigCommonInputCrop, /**< reference: OMX_CONFIG_RECTTYPE */
- OMX_IndexConfigCommonOutputCrop, /**< reference: OMX_CONFIG_RECTTYPE */
- OMX_IndexConfigCommonDigitalZoom, /**< reference: OMX_CONFIG_SCALEFACTORTYPE */
- OMX_IndexConfigCommonOpticalZoom, /**< reference: OMX_CONFIG_SCALEFACTORTYPE*/
- OMX_IndexConfigCommonWhiteBalance, /**< reference: OMX_CONFIG_WHITEBALCONTROLTYPE */
- OMX_IndexConfigCommonExposure, /**< reference: OMX_CONFIG_EXPOSURECONTROLTYPE */
- OMX_IndexConfigCommonContrast, /**< reference: OMX_CONFIG_CONTRASTTYPE */
- OMX_IndexConfigCommonBrightness, /**< reference: OMX_CONFIG_BRIGHTNESSTYPE */
- OMX_IndexConfigCommonBacklight, /**< reference: OMX_CONFIG_BACKLIGHTTYPE */
- OMX_IndexConfigCommonGamma, /**< reference: OMX_CONFIG_GAMMATYPE */
- OMX_IndexConfigCommonSaturation, /**< reference: OMX_CONFIG_SATURATIONTYPE */
- OMX_IndexConfigCommonLightness, /**< reference: OMX_CONFIG_LIGHTNESSTYPE */
- OMX_IndexConfigCommonExclusionRect, /**< reference: OMX_CONFIG_RECTTYPE */
- OMX_IndexConfigCommonDithering, /**< reference: OMX_CONFIG_DITHERTYPE */
- OMX_IndexConfigCommonPlaneBlend, /**< reference: OMX_CONFIG_PLANEBLENDTYPE */
- OMX_IndexConfigCommonExposureValue, /**< reference: OMX_CONFIG_EXPOSUREVALUETYPE */
- OMX_IndexConfigCommonOutputSize, /**< reference: OMX_FRAMESIZETYPE */
- OMX_IndexParamCommonExtraQuantData, /**< reference: OMX_OTHER_EXTRADATATYPE */
- OMX_IndexConfigCommonFocusRegion, /**< reference: OMX_CONFIG_FOCUSREGIONTYPE */
- OMX_IndexConfigCommonFocusStatus, /**< reference: OMX_PARAM_FOCUSSTATUSTYPE */
- OMX_IndexConfigCommonTransitionEffect, /**< reference: OMX_CONFIG_TRANSITIONEFFECTTYPE */
-
- /* Reserved Configuration range */
- OMX_IndexOtherStartUnused = 0x08000000,
- OMX_IndexParamOtherPortFormat, /**< reference: OMX_OTHER_PARAM_PORTFORMATTYPE */
- OMX_IndexConfigOtherPower, /**< reference: OMX_OTHER_CONFIG_POWERTYPE */
- OMX_IndexConfigOtherStats, /**< reference: OMX_OTHER_CONFIG_STATSTYPE */
-
-
- /* Reserved Time range */
- OMX_IndexTimeStartUnused = 0x09000000,
- OMX_IndexConfigTimeScale, /**< reference: OMX_TIME_CONFIG_SCALETYPE */
- OMX_IndexConfigTimeClockState, /**< reference: OMX_TIME_CONFIG_CLOCKSTATETYPE */
- OMX_IndexConfigTimeActiveRefClock, /**< reference: OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE */
- OMX_IndexConfigTimeCurrentMediaTime, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only) */
- OMX_IndexConfigTimeCurrentWallTime, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only) */
- OMX_IndexConfigTimeCurrentAudioReference, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */
- OMX_IndexConfigTimeCurrentVideoReference, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */
- OMX_IndexConfigTimeMediaTimeRequest, /**< reference: OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE (write only) */
- OMX_IndexConfigTimeClientStartTime, /**<reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */
- OMX_IndexConfigTimePosition, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE */
- OMX_IndexConfigTimeSeekMode, /**< reference: OMX_TIME_CONFIG_SEEKMODETYPE */
-
-
- OMX_IndexKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- /* Vendor specific area */
- OMX_IndexVendorStartUnused = 0x7F000000,
- /* Vendor specific structures should be in the range of 0x7F000000
- to 0x7FFFFFFE. This range is not broken out by vendor, so
- private indexes are not guaranteed unique and therefore should
- only be sent to the appropriate component. */
-
- OMX_IndexMax = 0x7FFFFFFF
-
-} OMX_INDEXTYPE;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
diff --git a/include/media/stagefright/openmax/OMX_Other.h b/include/media/stagefright/openmax/OMX_Other.h
deleted file mode 100644
index efbce83..0000000
--- a/include/media/stagefright/openmax/OMX_Other.h
+++ /dev/null
@@ -1,354 +0,0 @@
-/* ------------------------------------------------------------------
- * Copyright (C) 1998-2009 PacketVideo
- *
- * 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.
- * -------------------------------------------------------------------
- */
-/*
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/** @file OMX_Other.h - OpenMax IL version 1.1.2
- * The structures needed by Other components to exchange
- * parameters and configuration data with the components.
- */
-
-#ifndef OMX_Other_h
-#define OMX_Other_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/* Each OMX header must include all required header files to allow the
- * header to compile without errors. The includes below are required
- * for this header file to compile successfully
- */
-
-#include <OMX_Core.h>
-
-
-/**
- * Enumeration of possible data types which match to multiple domains or no
- * domain at all. For types which are vendor specific, a value above
- * OMX_OTHER_VENDORTSTART should be used.
- */
-typedef enum OMX_OTHER_FORMATTYPE {
- OMX_OTHER_FormatTime = 0, /**< Transmission of various timestamps, elapsed time,
- time deltas, etc */
- OMX_OTHER_FormatPower, /**< Perhaps used for enabling/disabling power
- management, setting clocks? */
- OMX_OTHER_FormatStats, /**< Could be things such as frame rate, frames
- dropped, etc */
- OMX_OTHER_FormatBinary, /**< Arbitrary binary data */
- OMX_OTHER_FormatVendorReserved = 1000, /**< Starting value for vendor specific
- formats */
-
- OMX_OTHER_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_OTHER_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_OTHER_FormatMax = 0x7FFFFFFF
-} OMX_OTHER_FORMATTYPE;
-
-/**
- * Enumeration of seek modes.
- */
-typedef enum OMX_TIME_SEEKMODETYPE {
- OMX_TIME_SeekModeFast = 0, /**< Prefer seeking to an approximation
- * of the requested seek position over
- * the actual seek position if it
- * results in a faster seek. */
- OMX_TIME_SeekModeAccurate, /**< Prefer seeking to the actual seek
- * position over an approximation
- * of the requested seek position even
- * if it results in a slower seek. */
- OMX_TIME_SeekModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_TIME_SeekModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_TIME_SeekModeMax = 0x7FFFFFFF
-} OMX_TIME_SEEKMODETYPE;
-
-/* Structure representing the seekmode of the component */
-typedef struct OMX_TIME_CONFIG_SEEKMODETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_TIME_SEEKMODETYPE eType; /**< The seek mode */
-} OMX_TIME_CONFIG_SEEKMODETYPE;
-
-/** Structure representing a time stamp used with the following configs
- * on the Clock Component (CC):
- *
- * OMX_IndexConfigTimeCurrentWallTime: query of the CC’s current wall
- * time
- * OMX_IndexConfigTimeCurrentMediaTime: query of the CC’s current media
- * time
- * OMX_IndexConfigTimeCurrentAudioReference and
- * OMX_IndexConfigTimeCurrentVideoReference: audio/video reference
- * clock sending SC its reference time
- * OMX_IndexConfigTimeClientStartTime: a Clock Component client sends
- * this structure to the Clock Component via a SetConfig on its
- * client port when it receives a buffer with
- * OMX_BUFFERFLAG_STARTTIME set. It must use the timestamp
- * specified by that buffer for nStartTimestamp.
- *
- * It’s also used with the following config on components in general:
- *
- * OMX_IndexConfigTimePosition: IL client querying component position
- * (GetConfig) or commanding a component to seek to the given location
- * (SetConfig)
- */
-typedef struct OMX_TIME_CONFIG_TIMESTAMPTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version
- * information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_TICKS nTimestamp; /**< timestamp .*/
-} OMX_TIME_CONFIG_TIMESTAMPTYPE;
-
-/** Enumeration of possible reference clocks to the media time. */
-typedef enum OMX_TIME_UPDATETYPE {
- OMX_TIME_UpdateRequestFulfillment, /**< Update is the fulfillment of a media time request. */
- OMX_TIME_UpdateScaleChanged, /**< Update was generated because the scale chagned. */
- OMX_TIME_UpdateClockStateChanged, /**< Update was generated because the clock state changed. */
- OMX_TIME_UpdateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_TIME_UpdateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_TIME_UpdateMax = 0x7FFFFFFF
-} OMX_TIME_UPDATETYPE;
-
-/** Enumeration of possible reference clocks to the media time. */
-typedef enum OMX_TIME_REFCLOCKTYPE {
- OMX_TIME_RefClockNone, /**< Use no references. */
- OMX_TIME_RefClockAudio, /**< Use references sent through OMX_IndexConfigTimeCurrentAudioReference */
- OMX_TIME_RefClockVideo, /**< Use references sent through OMX_IndexConfigTimeCurrentVideoReference */
- OMX_TIME_RefClockKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_TIME_RefClockVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_TIME_RefClockMax = 0x7FFFFFFF
-} OMX_TIME_REFCLOCKTYPE;
-
-/** Enumeration of clock states. */
-typedef enum OMX_TIME_CLOCKSTATE {
- OMX_TIME_ClockStateRunning, /**< Clock running. */
- OMX_TIME_ClockStateWaitingForStartTime, /**< Clock waiting until the
- * prescribed clients emit their
- * start time. */
- OMX_TIME_ClockStateStopped, /**< Clock stopped. */
- OMX_TIME_ClockStateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_TIME_ClockStateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_TIME_ClockStateMax = 0x7FFFFFFF
-} OMX_TIME_CLOCKSTATE;
-
-/** Structure representing a media time request to the clock component.
- *
- * A client component sends this structure to the Clock Component via a SetConfig
- * on its client port to specify a media timestamp the Clock Component
- * should emit. The Clock Component should fulfill the request by sending a
- * OMX_TIME_MEDIATIMETYPE when its media clock matches the requested
- * timestamp.
- *
- * The client may require a media time request be fulfilled slightly
- * earlier than the media time specified. In this case the client specifies
- * an offset which is equal to the difference between wall time corresponding
- * to the requested media time and the wall time when it will be
- * fulfilled.
- *
- * A client component may uses these requests and the OMX_TIME_MEDIATIMETYPE to
- * time events according to timestamps. If a client must perform an operation O at
- * a time T (e.g. deliver a video frame at its corresponding timestamp), it makes a
- * media time request at T (perhaps specifying an offset to ensure the request fulfillment
- * is a little early). When the clock component passes the resulting OMX_TIME_MEDIATIMETYPE
- * structure back to the client component, the client may perform operation O (perhaps having
- * to wait a slight amount more time itself as specified by the return values).
- */
-
-typedef struct OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_PTR pClientPrivate; /**< Client private data to disabiguate this media time
- * from others (e.g. the number of the frame to deliver).
- * Duplicated in the media time structure that fulfills
- * this request. A value of zero is reserved for time scale
- * updates. */
- OMX_TICKS nMediaTimestamp; /**< Media timestamp requested.*/
- OMX_TICKS nOffset; /**< Amount of wall clock time by which this
- * request should be fulfilled early */
-} OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE;
-
-/**< Structure sent from the clock component client either when fulfilling
- * a media time request or when the time scale has changed.
- *
- * In the former case the Clock Component fills this structure and times its emission
- * to a client component (via the client port) according to the corresponding media
- * time request sent by the client. The Clock Component should time the emission to occur
- * when the requested timestamp matches the Clock Component's media time but also the
- * prescribed offset early.
- *
- * Upon scale changes the clock component clears the nClientPrivate data, sends the current
- * media time and sets the nScale to the new scale via the client port. It emits a
- * OMX_TIME_MEDIATIMETYPE to all clients independent of any requests. This allows clients to
- * alter processing to accomodate scaling. For instance a video component might skip inter-frames
- * in the case of extreme fastforward. Likewise an audio component might add or remove samples
- * from an audio frame to scale audio data.
- *
- * It is expected that some clock components may not be able to fulfill requests
- * at exactly the prescribed time. This is acceptable so long as the request is
- * fulfilled at least as early as described and not later. This structure provides
- * fields the client may use to wait for the remaining time.
- *
- * The client may use either the nOffset or nWallTimeAtMedia fields to determine the
- * wall time until the nMediaTimestamp actually occurs. In the latter case the
- * client can get a more accurate value for offset by getting the current wall
- * from the cloc component and subtracting it from nWallTimeAtMedia.
- */
-
-typedef struct OMX_TIME_MEDIATIMETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nClientPrivate; /**< Client private data to disabiguate this media time
- * from others. Copied from the media time request.
- * A value of zero is reserved for time scale updates. */
- OMX_TIME_UPDATETYPE eUpdateType; /**< Reason for the update */
- OMX_TICKS nMediaTimestamp; /**< Media time requested. If no media time was
- * requested then this is the current media time. */
- OMX_TICKS nOffset; /**< Amount of wall clock time by which this
- * request was actually fulfilled early */
-
- OMX_TICKS nWallTimeAtMediaTime; /**< Wall time corresponding to nMediaTimeStamp.
- * A client may compare this value to current
- * media time obtained from the Clock Component to determine
- * the wall time until the media timestamp is really
- * current. */
- OMX_S32 xScale; /**< Current media time scale in Q16 format. */
- OMX_TIME_CLOCKSTATE eState; /* Seeking Change. Added 7/12.*/
- /**< State of the media time. */
-} OMX_TIME_MEDIATIMETYPE;
-
-/** Structure representing the current media time scale factor. Applicable only to clock
- * component, other components see scale changes via OMX_TIME_MEDIATIMETYPE buffers sent via
- * the clock component client ports. Upon recieving this config the clock component changes
- * the rate by which the media time increases or decreases effectively implementing trick modes.
- */
-typedef struct OMX_TIME_CONFIG_SCALETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_S32 xScale; /**< This is a value in Q16 format which is used for
- * scaling the media time */
-} OMX_TIME_CONFIG_SCALETYPE;
-
-/** Bits used to identify a clock port. Used in OMX_TIME_CONFIG_CLOCKSTATETYPE’s nWaitMask field */
-#define OMX_CLOCKPORT0 0x00000001
-#define OMX_CLOCKPORT1 0x00000002
-#define OMX_CLOCKPORT2 0x00000004
-#define OMX_CLOCKPORT3 0x00000008
-#define OMX_CLOCKPORT4 0x00000010
-#define OMX_CLOCKPORT5 0x00000020
-#define OMX_CLOCKPORT6 0x00000040
-#define OMX_CLOCKPORT7 0x00000080
-
-/** Structure representing the current mode of the media clock.
- * IL Client uses this config to change or query the mode of the
- * media clock of the clock component. Applicable only to clock
- * component.
- *
- * On a SetConfig if eState is OMX_TIME_ClockStateRunning media time
- * starts immediately at the prescribed start time. If
- * OMX_TIME_ClockStateWaitingForStartTime the Clock Component ignores
- * the given nStartTime and waits for all clients specified in the
- * nWaitMask to send starttimes (via
- * OMX_IndexConfigTimeClientStartTime). The Clock Component then starts
- * the media clock using the earliest start time supplied. */
-typedef struct OMX_TIME_CONFIG_CLOCKSTATETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version
- * information */
- OMX_TIME_CLOCKSTATE eState; /**< State of the media time. */
- OMX_TICKS nStartTime; /**< Start time of the media time. */
- OMX_TICKS nOffset; /**< Time to offset the media time by
- * (e.g. preroll). Media time will be
- * reported to be nOffset ticks earlier.
- */
- OMX_U32 nWaitMask; /**< Mask of OMX_CLOCKPORT values. */
-} OMX_TIME_CONFIG_CLOCKSTATETYPE;
-
-/** Structure representing the reference clock currently being used to
- * compute media time. IL client uses this config to change or query the
- * clock component's active reference clock */
-typedef struct OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_TIME_REFCLOCKTYPE eClock; /**< Reference clock used to compute media time */
-} OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE;
-
-/** Descriptor for setting specifics of power type.
- * Note: this structure is listed for backwards compatibility. */
-typedef struct OMX_OTHER_CONFIG_POWERTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_BOOL bEnablePM; /**< Flag to enable Power Management */
-} OMX_OTHER_CONFIG_POWERTYPE;
-
-
-/** Descriptor for setting specifics of stats type.
- * Note: this structure is listed for backwards compatibility. */
-typedef struct OMX_OTHER_CONFIG_STATSTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- /* what goes here */
-} OMX_OTHER_CONFIG_STATSTYPE;
-
-
-/**
- * The PortDefinition structure is used to define all of the parameters
- * necessary for the compliant component to setup an input or an output other
- * path.
- */
-typedef struct OMX_OTHER_PORTDEFINITIONTYPE {
- OMX_OTHER_FORMATTYPE eFormat; /**< Type of data expected for this channel */
-} OMX_OTHER_PORTDEFINITIONTYPE;
-
-/** Port format parameter. This structure is used to enumerate
- * the various data input/output format supported by the port.
- */
-typedef struct OMX_OTHER_PARAM_PORTFORMATTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Indicates which port to set */
- OMX_U32 nIndex; /**< Indicates the enumeration index for the format from 0x0 to N-1 */
- OMX_OTHER_FORMATTYPE eFormat; /**< Type of data expected for this channel */
-} OMX_OTHER_PARAM_PORTFORMATTYPE;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
diff --git a/include/media/stagefright/openmax/OMX_Types.h b/include/media/stagefright/openmax/OMX_Types.h
deleted file mode 100644
index 03fd4bc..0000000
--- a/include/media/stagefright/openmax/OMX_Types.h
+++ /dev/null
@@ -1,365 +0,0 @@
-/* ------------------------------------------------------------------
- * Copyright (C) 1998-2009 PacketVideo
- *
- * 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.
- * -------------------------------------------------------------------
- */
-/*
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/** OMX_Types.h - OpenMax IL version 1.1.2
- * The OMX_Types header file contains the primitive type definitions used by
- * the core, the application and the component. This file may need to be
- * modified to be used on systems that do not have "char" set to 8 bits,
- * "short" set to 16 bits and "long" set to 32 bits.
- */
-
-#ifndef OMX_Types_h
-#define OMX_Types_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/** The OMX_API and OMX_APIENTRY are platform specific definitions used
- * to declare OMX function prototypes. They are modified to meet the
- * requirements for a particular platform */
-#ifdef __SYMBIAN32__
-# ifdef __OMX_EXPORTS
-# define OMX_API __declspec(dllexport)
-# else
-# ifdef _WIN32
-# define OMX_API __declspec(dllexport)
-# else
-# define OMX_API __declspec(dllimport)
-# endif
-# endif
-#else
-# ifdef _WIN32
-# ifdef __OMX_EXPORTS
-# define OMX_API __declspec(dllexport)
-# else
-//# define OMX_API __declspec(dllimport)
-#define OMX_API
-# endif
-# else
-# ifdef __OMX_EXPORTS
-# define OMX_API
-# else
-# define OMX_API extern
-# endif
-# endif
-#endif
-
-#ifndef OMX_APIENTRY
-#define OMX_APIENTRY
-#endif
-
-/** OMX_IN is used to identify inputs to an OMX function. This designation
- will also be used in the case of a pointer that points to a parameter
- that is used as an output. */
-#ifndef OMX_IN
-#define OMX_IN
-#endif
-
-/** OMX_OUT is used to identify outputs from an OMX function. This
- designation will also be used in the case of a pointer that points
- to a parameter that is used as an input. */
-#ifndef OMX_OUT
-#define OMX_OUT
-#endif
-
-
-/** OMX_INOUT is used to identify parameters that may be either inputs or
- outputs from an OMX function at the same time. This designation will
- also be used in the case of a pointer that points to a parameter that
- is used both as an input and an output. */
-#ifndef OMX_INOUT
-#define OMX_INOUT
-#endif
-
-/** OMX_ALL is used to as a wildcard to select all entities of the same type
- * when specifying the index, or referring to a object by an index. (i.e.
- * use OMX_ALL to indicate all N channels). When used as a port index
- * for a config or parameter this OMX_ALL denotes that the config or
- * parameter applies to the entire component not just one port. */
-#define OMX_ALL 0xFFFFFFFF
-
-/** In the following we define groups that help building doxygen documentation */
-
-/** @defgroup core OpenMAX IL core
- * Functions and structure related to the OMX IL core
- */
-
- /** @defgroup comp OpenMAX IL component
- * Functions and structure related to the OMX IL component
- */
-
-/** @defgroup rpm Resource and Policy Management
- * Structures for resource and policy management of components
- */
-
-/** @defgroup buf Buffer Management
- * Buffer handling functions and structures
- */
-
-/** @defgroup tun Tunneling
- * @ingroup core comp
- * Structures and functions to manage tunnels among component ports
- */
-
-/** @defgroup cp Content Pipes
- * @ingroup core
- */
-
- /** @defgroup metadata Metadata handling
- *
- */
-
-/** OMX_U8 is an 8 bit unsigned quantity that is byte aligned */
-typedef unsigned char OMX_U8;
-
-/** OMX_S8 is an 8 bit signed quantity that is byte aligned */
-typedef signed char OMX_S8;
-
-/** OMX_U16 is a 16 bit unsigned quantity that is 16 bit word aligned */
-typedef unsigned short OMX_U16;
-
-/** OMX_S16 is a 16 bit signed quantity that is 16 bit word aligned */
-typedef signed short OMX_S16;
-
-/** OMX_U32 is a 32 bit unsigned quantity that is 32 bit word aligned */
-typedef unsigned long OMX_U32;
-
-/** OMX_S32 is a 32 bit signed quantity that is 32 bit word aligned */
-typedef signed long OMX_S32;
-
-
-/* Users with compilers that cannot accept the "long long" designation should
- define the OMX_SKIP64BIT macro. It should be noted that this may cause
- some components to fail to compile if the component was written to require
- 64 bit integral types. However, these components would NOT compile anyway
- since the compiler does not support the way the component was written.
-*/
-#ifndef OMX_SKIP64BIT
-#ifdef __SYMBIAN32__
-/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */
-typedef unsigned long long OMX_U64;
-
-/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */
-typedef signed long long OMX_S64;
-
-#elif defined(WIN32)
-
-/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */
-typedef unsigned __int64 OMX_U64;
-
-/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */
-typedef signed __int64 OMX_S64;
-
-#else /* WIN32 */
-
-/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */
-typedef unsigned long long OMX_U64;
-
-/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */
-typedef signed long long OMX_S64;
-
-#endif /* WIN32 */
-#endif
-
-
-/** The OMX_BOOL type is intended to be used to represent a true or a false
- value when passing parameters to and from the OMX core and components. The
- OMX_BOOL is a 32 bit quantity and is aligned on a 32 bit word boundary.
- */
-typedef enum OMX_BOOL {
- OMX_FALSE = 0,
- OMX_TRUE = !OMX_FALSE,
- OMX_BOOL_MAX = 0x7FFFFFFF
-} OMX_BOOL;
-
-/** The OMX_PTR type is intended to be used to pass pointers between the OMX
- applications and the OMX Core and components. This is a 32 bit pointer and
- is aligned on a 32 bit boundary.
- */
-typedef void* OMX_PTR;
-
-/** The OMX_STRING type is intended to be used to pass "C" type strings between
- the application and the core and component. The OMX_STRING type is a 32
- bit pointer to a zero terminated string. The pointer is word aligned and
- the string is byte aligned.
- */
-typedef char* OMX_STRING;
-
-/** The OMX_BYTE type is intended to be used to pass arrays of bytes such as
- buffers between the application and the component and core. The OMX_BYTE
- type is a 32 bit pointer to a zero terminated string. The pointer is word
- aligned and the string is byte aligned.
- */
-typedef unsigned char* OMX_BYTE;
-
-/** OMX_UUIDTYPE is a very long unique identifier to uniquely identify
- at runtime. This identifier should be generated by a component in a way
- that guarantees that every instance of the identifier running on the system
- is unique. */
-typedef unsigned char OMX_UUIDTYPE[128];
-
-/** The OMX_DIRTYPE enumeration is used to indicate if a port is an input or
- an output port. This enumeration is common across all component types.
- */
-typedef enum OMX_DIRTYPE
-{
- OMX_DirInput, /**< Port is an input port */
- OMX_DirOutput, /**< Port is an output port */
- OMX_DirMax = 0x7FFFFFFF
-} OMX_DIRTYPE;
-
-/** The OMX_ENDIANTYPE enumeration is used to indicate the bit ordering
- for numerical data (i.e. big endian, or little endian).
- */
-typedef enum OMX_ENDIANTYPE
-{
- OMX_EndianBig, /**< big endian */
- OMX_EndianLittle, /**< little endian */
- OMX_EndianMax = 0x7FFFFFFF
-} OMX_ENDIANTYPE;
-
-
-/** The OMX_NUMERICALDATATYPE enumeration is used to indicate if data
- is signed or unsigned
- */
-typedef enum OMX_NUMERICALDATATYPE
-{
- OMX_NumericalDataSigned, /**< signed data */
- OMX_NumericalDataUnsigned, /**< unsigned data */
- OMX_NumercialDataMax = 0x7FFFFFFF
-} OMX_NUMERICALDATATYPE;
-
-
-/** Unsigned bounded value type */
-typedef struct OMX_BU32 {
- OMX_U32 nValue; /**< actual value */
- OMX_U32 nMin; /**< minimum for value (i.e. nValue >= nMin) */
- OMX_U32 nMax; /**< maximum for value (i.e. nValue <= nMax) */
-} OMX_BU32;
-
-
-/** Signed bounded value type */
-typedef struct OMX_BS32 {
- OMX_S32 nValue; /**< actual value */
- OMX_S32 nMin; /**< minimum for value (i.e. nValue >= nMin) */
- OMX_S32 nMax; /**< maximum for value (i.e. nValue <= nMax) */
-} OMX_BS32;
-
-
-/** Structure representing some time or duration in microseconds. This structure
- * must be interpreted as a signed 64 bit value. The quantity is signed to accommodate
- * negative deltas and preroll scenarios. The quantity is represented in microseconds
- * to accomodate high resolution timestamps (e.g. DVD presentation timestamps based
- * on a 90kHz clock) and to allow more accurate and synchronized delivery (e.g.
- * individual audio samples delivered at 192 kHz). The quantity is 64 bit to
- * accommodate a large dynamic range (signed 32 bit values would allow only for plus
- * or minus 35 minutes).
- *
- * Implementations with limited precision may convert the signed 64 bit value to
- * a signed 32 bit value internally but risk loss of precision.
- */
-#ifndef OMX_SKIP64BIT
-typedef OMX_S64 OMX_TICKS;
-#else
-typedef struct OMX_TICKS
-{
- OMX_U32 nLowPart; /** low bits of the signed 64 bit tick value */
- OMX_U32 nHighPart; /** high bits of the signed 64 bit tick value */
-} OMX_TICKS;
-#endif
-#define OMX_TICKS_PER_SECOND 1000000
-
-/** Define the public interface for the OMX Handle. The core will not use
- this value internally, but the application should only use this value.
- */
-typedef void* OMX_HANDLETYPE;
-
-typedef struct OMX_MARKTYPE
-{
- OMX_HANDLETYPE hMarkTargetComponent; /**< The component that will
- generate a mark event upon
- processing the mark. */
- OMX_PTR pMarkData; /**< Application specific data associated with
- the mark sent on a mark event to disambiguate
- this mark from others. */
-} OMX_MARKTYPE;
-
-
-/** OMX_NATIVE_DEVICETYPE is used to map a OMX video port to the
- * platform & operating specific object used to reference the display
- * or can be used by a audio port for native audio rendering */
-typedef void* OMX_NATIVE_DEVICETYPE;
-
-/** OMX_NATIVE_WINDOWTYPE is used to map a OMX video port to the
- * platform & operating specific object used to reference the window */
-typedef void* OMX_NATIVE_WINDOWTYPE;
-
-/** The OMX_VERSIONTYPE union is used to specify the version for
- a structure or component. For a component, the version is entirely
- specified by the component vendor. Components doing the same function
- from different vendors may or may not have the same version. For
- structures, the version shall be set by the entity that allocates the
- structure. For structures specified in the OMX 1.1 specification, the
- value of the version shall be set to 1.1.0.0 in all cases. Access to the
- OMX_VERSIONTYPE can be by a single 32 bit access (e.g. by nVersion) or
- by accessing one of the structure elements to, for example, check only
- the Major revision.
- */
-typedef union OMX_VERSIONTYPE
-{
- struct
- {
- OMX_U8 nVersionMajor; /**< Major version accessor element */
- OMX_U8 nVersionMinor; /**< Minor version accessor element */
- OMX_U8 nRevision; /**< Revision version accessor element */
- OMX_U8 nStep; /**< Step version accessor element */
- } s;
- OMX_U32 nVersion; /**< 32 bit value to make accessing the
- version easily done in a single word
- size copy/compare operation */
-} OMX_VERSIONTYPE;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
diff --git a/include/media/stagefright/openmax/OMX_Video.h b/include/media/stagefright/openmax/OMX_Video.h
deleted file mode 100644
index 4f8485d..0000000
--- a/include/media/stagefright/openmax/OMX_Video.h
+++ /dev/null
@@ -1,1078 +0,0 @@
-/* ------------------------------------------------------------------
- * Copyright (C) 1998-2009 PacketVideo
- *
- * 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.
- * -------------------------------------------------------------------
- */
-/**
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/**
- * @file OMX_Video.h - OpenMax IL version 1.1.2
- * The structures is needed by Video components to exchange parameters
- * and configuration data with OMX components.
- */
-#ifndef OMX_Video_h
-#define OMX_Video_h
-
-/** @defgroup video OpenMAX IL Video Domain
- * @ingroup iv
- * Structures for OpenMAX IL Video domain
- * @{
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/**
- * Each OMX header must include all required header files to allow the
- * header to compile without errors. The includes below are required
- * for this header file to compile successfully
- */
-
-#include <OMX_IVCommon.h>
-
-
-/**
- * Enumeration used to define the possible video compression codings.
- * NOTE: This essentially refers to file extensions. If the coding is
- * being used to specify the ENCODE type, then additional work
- * must be done to configure the exact flavor of the compression
- * to be used. For decode cases where the user application can
- * not differentiate between MPEG-4 and H.264 bit streams, it is
- * up to the codec to handle this.
- */
-typedef enum OMX_VIDEO_CODINGTYPE {
- OMX_VIDEO_CodingUnused, /**< Value when coding is N/A */
- OMX_VIDEO_CodingAutoDetect, /**< Autodetection of coding type */
- OMX_VIDEO_CodingMPEG2, /**< AKA: H.262 */
- OMX_VIDEO_CodingH263, /**< H.263 */
- OMX_VIDEO_CodingMPEG4, /**< MPEG-4 */
- OMX_VIDEO_CodingWMV, /**< all versions of Windows Media Video */
- OMX_VIDEO_CodingRV, /**< all versions of Real Video */
- OMX_VIDEO_CodingAVC, /**< H.264/AVC */
- OMX_VIDEO_CodingMJPEG, /**< Motion JPEG */
- OMX_VIDEO_CodingVPX, /**< Google VPX, formerly known as On2 VP8 */
- OMX_VIDEO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_CodingMax = 0x7FFFFFFF
-} OMX_VIDEO_CODINGTYPE;
-
-
-/**
- * Data structure used to define a video path. The number of Video paths for
- * input and output will vary by type of the Video component.
- *
- * Input (aka Source) : zero Inputs, one Output,
- * Splitter : one Input, 2 or more Outputs,
- * Processing Element : one Input, one output,
- * Mixer : 2 or more inputs, one output,
- * Output (aka Sink) : one Input, zero outputs.
- *
- * The PortDefinition structure is used to define all of the parameters
- * necessary for the compliant component to setup an input or an output video
- * path. If additional vendor specific data is required, it should be
- * transmitted to the component using the CustomCommand function. Compliant
- * components will prepopulate this structure with optimal values during the
- * GetDefaultInitParams command.
- *
- * STRUCT MEMBERS:
- * cMIMEType : MIME type of data for the port
- * pNativeRender : Platform specific reference for a display if a
- * sync, otherwise this field is 0
- * nFrameWidth : Width of frame to be used on channel if
- * uncompressed format is used. Use 0 for unknown,
- * don't care or variable
- * nFrameHeight : Height of frame to be used on channel if
- * uncompressed format is used. Use 0 for unknown,
- * don't care or variable
- * nStride : Number of bytes per span of an image
- * (i.e. indicates the number of bytes to get
- * from span N to span N+1, where negative stride
- * indicates the image is bottom up
- * nSliceHeight : Height used when encoding in slices
- * nBitrate : Bit rate of frame to be used on channel if
- * compressed format is used. Use 0 for unknown,
- * don't care or variable
- * xFramerate : Frame rate to be used on channel if uncompressed
- * format is used. Use 0 for unknown, don't care or
- * variable. Units are Q16 frames per second.
- * bFlagErrorConcealment : Turns on error concealment if it is supported by
- * the OMX component
- * eCompressionFormat : Compression format used in this instance of the
- * component. When OMX_VIDEO_CodingUnused is
- * specified, eColorFormat is used
- * eColorFormat : Decompressed format used by this component
- * pNativeWindow : Platform specific reference for a window object if a
- * display sink , otherwise this field is 0x0.
- */
-typedef struct OMX_VIDEO_PORTDEFINITIONTYPE {
- OMX_STRING cMIMEType;
- OMX_NATIVE_DEVICETYPE pNativeRender;
- OMX_U32 nFrameWidth;
- OMX_U32 nFrameHeight;
- OMX_S32 nStride;
- OMX_U32 nSliceHeight;
- OMX_U32 nBitrate;
- OMX_U32 xFramerate;
- OMX_BOOL bFlagErrorConcealment;
- OMX_VIDEO_CODINGTYPE eCompressionFormat;
- OMX_COLOR_FORMATTYPE eColorFormat;
- OMX_NATIVE_WINDOWTYPE pNativeWindow;
-} OMX_VIDEO_PORTDEFINITIONTYPE;
-
-/**
- * Port format parameter. This structure is used to enumerate the various
- * data input/output format supported by the port.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Indicates which port to set
- * nIndex : Indicates the enumeration index for the format from
- * 0x0 to N-1
- * eCompressionFormat : Compression format used in this instance of the
- * component. When OMX_VIDEO_CodingUnused is specified,
- * eColorFormat is used
- * eColorFormat : Decompressed format used by this component
- * xFrameRate : Indicates the video frame rate in Q16 format
- */
-typedef struct OMX_VIDEO_PARAM_PORTFORMATTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nIndex;
- OMX_VIDEO_CODINGTYPE eCompressionFormat;
- OMX_COLOR_FORMATTYPE eColorFormat;
- OMX_U32 xFramerate;
-} OMX_VIDEO_PARAM_PORTFORMATTYPE;
-
-
-/**
- * This is a structure for configuring video compression quantization
- * parameter values. Codecs may support different QP values for different
- * frame types.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version info
- * nPortIndex : Port that this structure applies to
- * nQpI : QP value to use for index frames
- * nQpP : QP value to use for P frames
- * nQpB : QP values to use for bidirectional frames
- */
-typedef struct OMX_VIDEO_PARAM_QUANTIZATIONTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nQpI;
- OMX_U32 nQpP;
- OMX_U32 nQpB;
-} OMX_VIDEO_PARAM_QUANTIZATIONTYPE;
-
-
-/**
- * Structure for configuration of video fast update parameters.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version info
- * nPortIndex : Port that this structure applies to
- * bEnableVFU : Enable/Disable video fast update
- * nFirstGOB : Specifies the number of the first macroblock row
- * nFirstMB : specifies the first MB relative to the specified first GOB
- * nNumMBs : Specifies the number of MBs to be refreshed from nFirstGOB
- * and nFirstMB
- */
-typedef struct OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bEnableVFU;
- OMX_U32 nFirstGOB;
- OMX_U32 nFirstMB;
- OMX_U32 nNumMBs;
-} OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE;
-
-
-/**
- * Enumeration of possible bitrate control types
- */
-typedef enum OMX_VIDEO_CONTROLRATETYPE {
- OMX_Video_ControlRateDisable,
- OMX_Video_ControlRateVariable,
- OMX_Video_ControlRateConstant,
- OMX_Video_ControlRateVariableSkipFrames,
- OMX_Video_ControlRateConstantSkipFrames,
- OMX_Video_ControlRateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_Video_ControlRateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_Video_ControlRateMax = 0x7FFFFFFF
-} OMX_VIDEO_CONTROLRATETYPE;
-
-
-/**
- * Structure for configuring bitrate mode of a codec.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the struct in bytes
- * nVersion : OMX spec version info
- * nPortIndex : Port that this struct applies to
- * eControlRate : Control rate type enum
- * nTargetBitrate : Target bitrate to encode with
- */
-typedef struct OMX_VIDEO_PARAM_BITRATETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_VIDEO_CONTROLRATETYPE eControlRate;
- OMX_U32 nTargetBitrate;
-} OMX_VIDEO_PARAM_BITRATETYPE;
-
-
-/**
- * Enumeration of possible motion vector (MV) types
- */
-typedef enum OMX_VIDEO_MOTIONVECTORTYPE {
- OMX_Video_MotionVectorPixel,
- OMX_Video_MotionVectorHalfPel,
- OMX_Video_MotionVectorQuarterPel,
- OMX_Video_MotionVectorEighthPel,
- OMX_Video_MotionVectorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_Video_MotionVectorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_Video_MotionVectorMax = 0x7FFFFFFF
-} OMX_VIDEO_MOTIONVECTORTYPE;
-
-
-/**
- * Structure for configuring the number of motion vectors used as well
- * as their accuracy.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the struct in bytes
- * nVersion : OMX spec version info
- * nPortIndex : port that this structure applies to
- * eAccuracy : Enumerated MV accuracy
- * bUnrestrictedMVs : Allow unrestricted MVs
- * bFourMV : Allow use of 4 MVs
- * sXSearchRange : Search range in horizontal direction for MVs
- * sYSearchRange : Search range in vertical direction for MVs
- */
-typedef struct OMX_VIDEO_PARAM_MOTIONVECTORTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_VIDEO_MOTIONVECTORTYPE eAccuracy;
- OMX_BOOL bUnrestrictedMVs;
- OMX_BOOL bFourMV;
- OMX_S32 sXSearchRange;
- OMX_S32 sYSearchRange;
-} OMX_VIDEO_PARAM_MOTIONVECTORTYPE;
-
-
-/**
- * Enumeration of possible methods to use for Intra Refresh
- */
-typedef enum OMX_VIDEO_INTRAREFRESHTYPE {
- OMX_VIDEO_IntraRefreshCyclic,
- OMX_VIDEO_IntraRefreshAdaptive,
- OMX_VIDEO_IntraRefreshBoth,
- OMX_VIDEO_IntraRefreshKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_IntraRefreshVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_IntraRefreshMax = 0x7FFFFFFF
-} OMX_VIDEO_INTRAREFRESHTYPE;
-
-
-/**
- * Structure for configuring intra refresh mode
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eRefreshMode : Cyclic, Adaptive, or Both
- * nAirMBs : Number of intra macroblocks to refresh in a frame when
- * AIR is enabled
- * nAirRef : Number of times a motion marked macroblock has to be
- * intra coded
- * nCirMBs : Number of consecutive macroblocks to be coded as "intra"
- * when CIR is enabled
- */
-typedef struct OMX_VIDEO_PARAM_INTRAREFRESHTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_VIDEO_INTRAREFRESHTYPE eRefreshMode;
- OMX_U32 nAirMBs;
- OMX_U32 nAirRef;
- OMX_U32 nCirMBs;
-} OMX_VIDEO_PARAM_INTRAREFRESHTYPE;
-
-
-/**
- * Structure for enabling various error correction methods for video
- * compression.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * bEnableHEC : Enable/disable header extension codes (HEC)
- * bEnableResync : Enable/disable resynchronization markers
- * nResynchMarkerSpacing : Resynch markers interval (in bits) to be
- * applied in the stream
- * bEnableDataPartitioning : Enable/disable data partitioning
- * bEnableRVLC : Enable/disable reversible variable length
- * coding
- */
-typedef struct OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bEnableHEC;
- OMX_BOOL bEnableResync;
- OMX_U32 nResynchMarkerSpacing;
- OMX_BOOL bEnableDataPartitioning;
- OMX_BOOL bEnableRVLC;
-} OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE;
-
-
-/**
- * Configuration of variable block-size motion compensation (VBSMC)
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * b16x16 : Enable inter block search 16x16
- * b16x8 : Enable inter block search 16x8
- * b8x16 : Enable inter block search 8x16
- * b8x8 : Enable inter block search 8x8
- * b8x4 : Enable inter block search 8x4
- * b4x8 : Enable inter block search 4x8
- * b4x4 : Enable inter block search 4x4
- */
-typedef struct OMX_VIDEO_PARAM_VBSMCTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL b16x16;
- OMX_BOOL b16x8;
- OMX_BOOL b8x16;
- OMX_BOOL b8x8;
- OMX_BOOL b8x4;
- OMX_BOOL b4x8;
- OMX_BOOL b4x4;
-} OMX_VIDEO_PARAM_VBSMCTYPE;
-
-
-/**
- * H.263 profile types, each profile indicates support for various
- * performance bounds and different annexes.
- *
- * ENUMS:
- * Baseline : Baseline Profile: H.263 (V1), no optional modes
- * H320 Coding : H.320 Coding Efficiency Backward Compatibility
- * Profile: H.263+ (V2), includes annexes I, J, L.4
- * and T
- * BackwardCompatible : Backward Compatibility Profile: H.263 (V1),
- * includes annex F
- * ISWV2 : Interactive Streaming Wireless Profile: H.263+
- * (V2), includes annexes I, J, K and T
- * ISWV3 : Interactive Streaming Wireless Profile: H.263++
- * (V3), includes profile 3 and annexes V and W.6.3.8
- * HighCompression : Conversational High Compression Profile: H.263++
- * (V3), includes profiles 1 & 2 and annexes D and U
- * Internet : Conversational Internet Profile: H.263++ (V3),
- * includes profile 5 and annex K
- * Interlace : Conversational Interlace Profile: H.263++ (V3),
- * includes profile 5 and annex W.6.3.11
- * HighLatency : High Latency Profile: H.263++ (V3), includes
- * profile 6 and annexes O.1 and P.5
- */
-typedef enum OMX_VIDEO_H263PROFILETYPE {
- OMX_VIDEO_H263ProfileBaseline = 0x01,
- OMX_VIDEO_H263ProfileH320Coding = 0x02,
- OMX_VIDEO_H263ProfileBackwardCompatible = 0x04,
- OMX_VIDEO_H263ProfileISWV2 = 0x08,
- OMX_VIDEO_H263ProfileISWV3 = 0x10,
- OMX_VIDEO_H263ProfileHighCompression = 0x20,
- OMX_VIDEO_H263ProfileInternet = 0x40,
- OMX_VIDEO_H263ProfileInterlace = 0x80,
- OMX_VIDEO_H263ProfileHighLatency = 0x100,
- OMX_VIDEO_H263ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_H263ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_H263ProfileMax = 0x7FFFFFFF
-} OMX_VIDEO_H263PROFILETYPE;
-
-
-/**
- * H.263 level types, each level indicates support for various frame sizes,
- * bit rates, decoder frame rates.
- */
-typedef enum OMX_VIDEO_H263LEVELTYPE {
- OMX_VIDEO_H263Level10 = 0x01,
- OMX_VIDEO_H263Level20 = 0x02,
- OMX_VIDEO_H263Level30 = 0x04,
- OMX_VIDEO_H263Level40 = 0x08,
- OMX_VIDEO_H263Level45 = 0x10,
- OMX_VIDEO_H263Level50 = 0x20,
- OMX_VIDEO_H263Level60 = 0x40,
- OMX_VIDEO_H263Level70 = 0x80,
- OMX_VIDEO_H263LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_H263LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_H263LevelMax = 0x7FFFFFFF
-} OMX_VIDEO_H263LEVELTYPE;
-
-
-/**
- * Specifies the picture type. These values should be OR'd to signal all
- * pictures types which are allowed.
- *
- * ENUMS:
- * Generic Picture Types: I, P and B
- * H.263 Specific Picture Types: SI and SP
- * H.264 Specific Picture Types: EI and EP
- * MPEG-4 Specific Picture Types: S
- */
-typedef enum OMX_VIDEO_PICTURETYPE {
- OMX_VIDEO_PictureTypeI = 0x01,
- OMX_VIDEO_PictureTypeP = 0x02,
- OMX_VIDEO_PictureTypeB = 0x04,
- OMX_VIDEO_PictureTypeSI = 0x08,
- OMX_VIDEO_PictureTypeSP = 0x10,
- OMX_VIDEO_PictureTypeEI = 0x11,
- OMX_VIDEO_PictureTypeEP = 0x12,
- OMX_VIDEO_PictureTypeS = 0x14,
- OMX_VIDEO_PictureTypeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_PictureTypeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_PictureTypeMax = 0x7FFFFFFF
-} OMX_VIDEO_PICTURETYPE;
-
-
-/**
- * H.263 Params
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nPFrames : Number of P frames between each I frame
- * nBFrames : Number of B frames between each I frame
- * eProfile : H.263 profile(s) to use
- * eLevel : H.263 level(s) to use
- * bPLUSPTYPEAllowed : Indicating that it is allowed to use PLUSPTYPE
- * (specified in the 1998 version of H.263) to
- * indicate custom picture sizes or clock
- * frequencies
- * nAllowedPictureTypes : Specifies the picture types allowed in the
- * bitstream
- * bForceRoundingTypeToZero : value of the RTYPE bit (bit 6 of MPPTYPE) is
- * not constrained. It is recommended to change
- * the value of the RTYPE bit for each reference
- * picture in error-free communication
- * nPictureHeaderRepetition : Specifies the frequency of picture header
- * repetition
- * nGOBHeaderInterval : Specifies the interval of non-empty GOB
- * headers in units of GOBs
- */
-typedef struct OMX_VIDEO_PARAM_H263TYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nPFrames;
- OMX_U32 nBFrames;
- OMX_VIDEO_H263PROFILETYPE eProfile;
- OMX_VIDEO_H263LEVELTYPE eLevel;
- OMX_BOOL bPLUSPTYPEAllowed;
- OMX_U32 nAllowedPictureTypes;
- OMX_BOOL bForceRoundingTypeToZero;
- OMX_U32 nPictureHeaderRepetition;
- OMX_U32 nGOBHeaderInterval;
-} OMX_VIDEO_PARAM_H263TYPE;
-
-
-/**
- * MPEG-2 profile types, each profile indicates support for various
- * performance bounds and different annexes.
- */
-typedef enum OMX_VIDEO_MPEG2PROFILETYPE {
- OMX_VIDEO_MPEG2ProfileSimple = 0, /**< Simple Profile */
- OMX_VIDEO_MPEG2ProfileMain, /**< Main Profile */
- OMX_VIDEO_MPEG2Profile422, /**< 4:2:2 Profile */
- OMX_VIDEO_MPEG2ProfileSNR, /**< SNR Profile */
- OMX_VIDEO_MPEG2ProfileSpatial, /**< Spatial Profile */
- OMX_VIDEO_MPEG2ProfileHigh, /**< High Profile */
- OMX_VIDEO_MPEG2ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_MPEG2ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_MPEG2ProfileMax = 0x7FFFFFFF
-} OMX_VIDEO_MPEG2PROFILETYPE;
-
-
-/**
- * MPEG-2 level types, each level indicates support for various frame
- * sizes, bit rates, decoder frame rates. No need
- */
-typedef enum OMX_VIDEO_MPEG2LEVELTYPE {
- OMX_VIDEO_MPEG2LevelLL = 0, /**< Low Level */
- OMX_VIDEO_MPEG2LevelML, /**< Main Level */
- OMX_VIDEO_MPEG2LevelH14, /**< High 1440 */
- OMX_VIDEO_MPEG2LevelHL, /**< High Level */
- OMX_VIDEO_MPEG2LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_MPEG2LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_MPEG2LevelMax = 0x7FFFFFFF
-} OMX_VIDEO_MPEG2LEVELTYPE;
-
-
-/**
- * MPEG-2 params
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nPFrames : Number of P frames between each I frame
- * nBFrames : Number of B frames between each I frame
- * eProfile : MPEG-2 profile(s) to use
- * eLevel : MPEG-2 levels(s) to use
- */
-typedef struct OMX_VIDEO_PARAM_MPEG2TYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nPFrames;
- OMX_U32 nBFrames;
- OMX_VIDEO_MPEG2PROFILETYPE eProfile;
- OMX_VIDEO_MPEG2LEVELTYPE eLevel;
-} OMX_VIDEO_PARAM_MPEG2TYPE;
-
-
-/**
- * MPEG-4 profile types, each profile indicates support for various
- * performance bounds and different annexes.
- *
- * ENUMS:
- * - Simple Profile, Levels 1-3
- * - Simple Scalable Profile, Levels 1-2
- * - Core Profile, Levels 1-2
- * - Main Profile, Levels 2-4
- * - N-bit Profile, Level 2
- * - Scalable Texture Profile, Level 1
- * - Simple Face Animation Profile, Levels 1-2
- * - Simple Face and Body Animation (FBA) Profile, Levels 1-2
- * - Basic Animated Texture Profile, Levels 1-2
- * - Hybrid Profile, Levels 1-2
- * - Advanced Real Time Simple Profiles, Levels 1-4
- * - Core Scalable Profile, Levels 1-3
- * - Advanced Coding Efficiency Profile, Levels 1-4
- * - Advanced Core Profile, Levels 1-2
- * - Advanced Scalable Texture, Levels 2-3
- */
-typedef enum OMX_VIDEO_MPEG4PROFILETYPE {
- OMX_VIDEO_MPEG4ProfileSimple = 0x01,
- OMX_VIDEO_MPEG4ProfileSimpleScalable = 0x02,
- OMX_VIDEO_MPEG4ProfileCore = 0x04,
- OMX_VIDEO_MPEG4ProfileMain = 0x08,
- OMX_VIDEO_MPEG4ProfileNbit = 0x10,
- OMX_VIDEO_MPEG4ProfileScalableTexture = 0x20,
- OMX_VIDEO_MPEG4ProfileSimpleFace = 0x40,
- OMX_VIDEO_MPEG4ProfileSimpleFBA = 0x80,
- OMX_VIDEO_MPEG4ProfileBasicAnimated = 0x100,
- OMX_VIDEO_MPEG4ProfileHybrid = 0x200,
- OMX_VIDEO_MPEG4ProfileAdvancedRealTime = 0x400,
- OMX_VIDEO_MPEG4ProfileCoreScalable = 0x800,
- OMX_VIDEO_MPEG4ProfileAdvancedCoding = 0x1000,
- OMX_VIDEO_MPEG4ProfileAdvancedCore = 0x2000,
- OMX_VIDEO_MPEG4ProfileAdvancedScalable = 0x4000,
- OMX_VIDEO_MPEG4ProfileAdvancedSimple = 0x8000,
- OMX_VIDEO_MPEG4ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_MPEG4ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_MPEG4ProfileMax = 0x7FFFFFFF
-} OMX_VIDEO_MPEG4PROFILETYPE;
-
-
-/**
- * MPEG-4 level types, each level indicates support for various frame
- * sizes, bit rates, decoder frame rates. No need
- */
-typedef enum OMX_VIDEO_MPEG4LEVELTYPE {
- OMX_VIDEO_MPEG4Level0 = 0x01, /**< Level 0 */
- OMX_VIDEO_MPEG4Level0b = 0x02, /**< Level 0b */
- OMX_VIDEO_MPEG4Level1 = 0x04, /**< Level 1 */
- OMX_VIDEO_MPEG4Level2 = 0x08, /**< Level 2 */
- OMX_VIDEO_MPEG4Level3 = 0x10, /**< Level 3 */
- OMX_VIDEO_MPEG4Level4 = 0x20, /**< Level 4 */
- OMX_VIDEO_MPEG4Level4a = 0x40, /**< Level 4a */
- OMX_VIDEO_MPEG4Level5 = 0x80, /**< Level 5 */
- OMX_VIDEO_MPEG4LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_MPEG4LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_MPEG4LevelMax = 0x7FFFFFFF
-} OMX_VIDEO_MPEG4LEVELTYPE;
-
-
-/**
- * MPEG-4 configuration. This structure handles configuration options
- * which are specific to MPEG4 algorithms
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nSliceHeaderSpacing : Number of macroblocks between slice header (H263+
- * Annex K). Put zero if not used
- * bSVH : Enable Short Video Header mode
- * bGov : Flag to enable GOV
- * nPFrames : Number of P frames between each I frame (also called
- * GOV period)
- * nBFrames : Number of B frames between each I frame
- * nIDCVLCThreshold : Value of intra DC VLC threshold
- * bACPred : Flag to use ac prediction
- * nMaxPacketSize : Maximum size of packet in bytes.
- * nTimeIncRes : Used to pass VOP time increment resolution for MPEG4.
- * Interpreted as described in MPEG4 standard.
- * eProfile : MPEG-4 profile(s) to use.
- * eLevel : MPEG-4 level(s) to use.
- * nAllowedPictureTypes : Specifies the picture types allowed in the bitstream
- * nHeaderExtension : Specifies the number of consecutive video packet
- * headers within a VOP
- * bReversibleVLC : Specifies whether reversible variable length coding
- * is in use
- */
-typedef struct OMX_VIDEO_PARAM_MPEG4TYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nSliceHeaderSpacing;
- OMX_BOOL bSVH;
- OMX_BOOL bGov;
- OMX_U32 nPFrames;
- OMX_U32 nBFrames;
- OMX_U32 nIDCVLCThreshold;
- OMX_BOOL bACPred;
- OMX_U32 nMaxPacketSize;
- OMX_U32 nTimeIncRes;
- OMX_VIDEO_MPEG4PROFILETYPE eProfile;
- OMX_VIDEO_MPEG4LEVELTYPE eLevel;
- OMX_U32 nAllowedPictureTypes;
- OMX_U32 nHeaderExtension;
- OMX_BOOL bReversibleVLC;
-} OMX_VIDEO_PARAM_MPEG4TYPE;
-
-
-/**
- * WMV Versions
- */
-typedef enum OMX_VIDEO_WMVFORMATTYPE {
- OMX_VIDEO_WMVFormatUnused = 0x01, /**< Format unused or unknown */
- OMX_VIDEO_WMVFormat7 = 0x02, /**< Windows Media Video format 7 */
- OMX_VIDEO_WMVFormat8 = 0x04, /**< Windows Media Video format 8 */
- OMX_VIDEO_WMVFormat9 = 0x08, /**< Windows Media Video format 9 */
- OMX_VIDEO_WMFFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_WMFFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_WMVFormatMax = 0x7FFFFFFF
-} OMX_VIDEO_WMVFORMATTYPE;
-
-
-/**
- * WMV Params
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eFormat : Version of WMV stream / data
- */
-typedef struct OMX_VIDEO_PARAM_WMVTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_VIDEO_WMVFORMATTYPE eFormat;
-} OMX_VIDEO_PARAM_WMVTYPE;
-
-
-/**
- * Real Video Version
- */
-typedef enum OMX_VIDEO_RVFORMATTYPE {
- OMX_VIDEO_RVFormatUnused = 0, /**< Format unused or unknown */
- OMX_VIDEO_RVFormat8, /**< Real Video format 8 */
- OMX_VIDEO_RVFormat9, /**< Real Video format 9 */
- OMX_VIDEO_RVFormatG2, /**< Real Video Format G2 */
- OMX_VIDEO_RVFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_RVFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_RVFormatMax = 0x7FFFFFFF
-} OMX_VIDEO_RVFORMATTYPE;
-
-
-/**
- * Real Video Params
- *
- * STUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eFormat : Version of RV stream / data
- * nBitsPerPixel : Bits per pixel coded in the frame
- * nPaddedWidth : Padded width in pixel of a video frame
- * nPaddedHeight : Padded Height in pixels of a video frame
- * nFrameRate : Rate of video in frames per second
- * nBitstreamFlags : Flags which internal information about the bitstream
- * nBitstreamVersion : Bitstream version
- * nMaxEncodeFrameSize: Max encoded frame size
- * bEnablePostFilter : Turn on/off post filter
- * bEnableTemporalInterpolation : Turn on/off temporal interpolation
- * bEnableLatencyMode : When enabled, the decoder does not display a decoded
- * frame until it has detected that no enhancement layer
- * frames or dependent B frames will be coming. This
- * detection usually occurs when a subsequent non-B
- * frame is encountered
- */
-typedef struct OMX_VIDEO_PARAM_RVTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_VIDEO_RVFORMATTYPE eFormat;
- OMX_U16 nBitsPerPixel;
- OMX_U16 nPaddedWidth;
- OMX_U16 nPaddedHeight;
- OMX_U32 nFrameRate;
- OMX_U32 nBitstreamFlags;
- OMX_U32 nBitstreamVersion;
- OMX_U32 nMaxEncodeFrameSize;
- OMX_BOOL bEnablePostFilter;
- OMX_BOOL bEnableTemporalInterpolation;
- OMX_BOOL bEnableLatencyMode;
-} OMX_VIDEO_PARAM_RVTYPE;
-
-
-/**
- * AVC profile types, each profile indicates support for various
- * performance bounds and different annexes.
- */
-typedef enum OMX_VIDEO_AVCPROFILETYPE {
- OMX_VIDEO_AVCProfileBaseline = 0x01, /**< Baseline profile */
- OMX_VIDEO_AVCProfileMain = 0x02, /**< Main profile */
- OMX_VIDEO_AVCProfileExtended = 0x04, /**< Extended profile */
- OMX_VIDEO_AVCProfileHigh = 0x08, /**< High profile */
- OMX_VIDEO_AVCProfileHigh10 = 0x10, /**< High 10 profile */
- OMX_VIDEO_AVCProfileHigh422 = 0x20, /**< High 4:2:2 profile */
- OMX_VIDEO_AVCProfileHigh444 = 0x40, /**< High 4:4:4 profile */
- OMX_VIDEO_AVCProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_AVCProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_AVCProfileMax = 0x7FFFFFFF
-} OMX_VIDEO_AVCPROFILETYPE;
-
-
-/**
- * AVC level types, each level indicates support for various frame sizes,
- * bit rates, decoder frame rates. No need
- */
-typedef enum OMX_VIDEO_AVCLEVELTYPE {
- OMX_VIDEO_AVCLevel1 = 0x01, /**< Level 1 */
- OMX_VIDEO_AVCLevel1b = 0x02, /**< Level 1b */
- OMX_VIDEO_AVCLevel11 = 0x04, /**< Level 1.1 */
- OMX_VIDEO_AVCLevel12 = 0x08, /**< Level 1.2 */
- OMX_VIDEO_AVCLevel13 = 0x10, /**< Level 1.3 */
- OMX_VIDEO_AVCLevel2 = 0x20, /**< Level 2 */
- OMX_VIDEO_AVCLevel21 = 0x40, /**< Level 2.1 */
- OMX_VIDEO_AVCLevel22 = 0x80, /**< Level 2.2 */
- OMX_VIDEO_AVCLevel3 = 0x100, /**< Level 3 */
- OMX_VIDEO_AVCLevel31 = 0x200, /**< Level 3.1 */
- OMX_VIDEO_AVCLevel32 = 0x400, /**< Level 3.2 */
- OMX_VIDEO_AVCLevel4 = 0x800, /**< Level 4 */
- OMX_VIDEO_AVCLevel41 = 0x1000, /**< Level 4.1 */
- OMX_VIDEO_AVCLevel42 = 0x2000, /**< Level 4.2 */
- OMX_VIDEO_AVCLevel5 = 0x4000, /**< Level 5 */
- OMX_VIDEO_AVCLevel51 = 0x8000, /**< Level 5.1 */
- OMX_VIDEO_AVCLevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_AVCLevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_AVCLevelMax = 0x7FFFFFFF
-} OMX_VIDEO_AVCLEVELTYPE;
-
-
-/**
- * AVC loop filter modes
- *
- * OMX_VIDEO_AVCLoopFilterEnable : Enable
- * OMX_VIDEO_AVCLoopFilterDisable : Disable
- * OMX_VIDEO_AVCLoopFilterDisableSliceBoundary : Disabled on slice boundaries
- */
-typedef enum OMX_VIDEO_AVCLOOPFILTERTYPE {
- OMX_VIDEO_AVCLoopFilterEnable = 0,
- OMX_VIDEO_AVCLoopFilterDisable,
- OMX_VIDEO_AVCLoopFilterDisableSliceBoundary,
- OMX_VIDEO_AVCLoopFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_AVCLoopFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_AVCLoopFilterMax = 0x7FFFFFFF
-} OMX_VIDEO_AVCLOOPFILTERTYPE;
-
-
-/**
- * AVC params
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nSliceHeaderSpacing : Number of macroblocks between slice header, put
- * zero if not used
- * nPFrames : Number of P frames between each I frame
- * nBFrames : Number of B frames between each I frame
- * bUseHadamard : Enable/disable Hadamard transform
- * nRefFrames : Max number of reference frames to use for inter
- * motion search (1-16)
- * nRefIdxTrailing : Pic param set ref frame index (index into ref
- * frame buffer of trailing frames list), B frame
- * support
- * nRefIdxForward : Pic param set ref frame index (index into ref
- * frame buffer of forward frames list), B frame
- * support
- * bEnableUEP : Enable/disable unequal error protection. This
- * is only valid of data partitioning is enabled.
- * bEnableFMO : Enable/disable flexible macroblock ordering
- * bEnableASO : Enable/disable arbitrary slice ordering
- * bEnableRS : Enable/disable sending of redundant slices
- * eProfile : AVC profile(s) to use
- * eLevel : AVC level(s) to use
- * nAllowedPictureTypes : Specifies the picture types allowed in the
- * bitstream
- * bFrameMBsOnly : specifies that every coded picture of the
- * coded video sequence is a coded frame
- * containing only frame macroblocks
- * bMBAFF : Enable/disable switching between frame and
- * field macroblocks within a picture
- * bEntropyCodingCABAC : Entropy decoding method to be applied for the
- * syntax elements for which two descriptors appear
- * in the syntax tables
- * bWeightedPPrediction : Enable/disable weighted prediction shall not
- * be applied to P and SP slices
- * nWeightedBipredicitonMode : Default weighted prediction is applied to B
- * slices
- * bconstIpred : Enable/disable intra prediction
- * bDirect8x8Inference : Specifies the method used in the derivation
- * process for luma motion vectors for B_Skip,
- * B_Direct_16x16 and B_Direct_8x8 as specified
- * in subclause 8.4.1.2 of the AVC spec
- * bDirectSpatialTemporal : Flag indicating spatial or temporal direct
- * mode used in B slice coding (related to
- * bDirect8x8Inference) . Spatial direct mode is
- * more common and should be the default.
- * nCabacInitIdx : Index used to init CABAC contexts
- * eLoopFilterMode : Enable/disable loop filter
- */
-typedef struct OMX_VIDEO_PARAM_AVCTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nSliceHeaderSpacing;
- OMX_U32 nPFrames;
- OMX_U32 nBFrames;
- OMX_BOOL bUseHadamard;
- OMX_U32 nRefFrames;
- OMX_U32 nRefIdx10ActiveMinus1;
- OMX_U32 nRefIdx11ActiveMinus1;
- OMX_BOOL bEnableUEP;
- OMX_BOOL bEnableFMO;
- OMX_BOOL bEnableASO;
- OMX_BOOL bEnableRS;
- OMX_VIDEO_AVCPROFILETYPE eProfile;
- OMX_VIDEO_AVCLEVELTYPE eLevel;
- OMX_U32 nAllowedPictureTypes;
- OMX_BOOL bFrameMBsOnly;
- OMX_BOOL bMBAFF;
- OMX_BOOL bEntropyCodingCABAC;
- OMX_BOOL bWeightedPPrediction;
- OMX_U32 nWeightedBipredicitonMode;
- OMX_BOOL bconstIpred ;
- OMX_BOOL bDirect8x8Inference;
- OMX_BOOL bDirectSpatialTemporal;
- OMX_U32 nCabacInitIdc;
- OMX_VIDEO_AVCLOOPFILTERTYPE eLoopFilterMode;
-} OMX_VIDEO_PARAM_AVCTYPE;
-
-typedef struct OMX_VIDEO_PARAM_PROFILELEVELTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 eProfile; /**< type is OMX_VIDEO_AVCPROFILETYPE, OMX_VIDEO_H263PROFILETYPE,
- or OMX_VIDEO_MPEG4PROFILETYPE depending on context */
- OMX_U32 eLevel; /**< type is OMX_VIDEO_AVCLEVELTYPE, OMX_VIDEO_H263LEVELTYPE,
- or OMX_VIDEO_MPEG4PROFILETYPE depending on context */
- OMX_U32 nProfileIndex; /**< Used to query for individual profile support information,
- This parameter is valid only for
- OMX_IndexParamVideoProfileLevelQuerySupported index,
- For all other indices this parameter is to be ignored. */
-} OMX_VIDEO_PARAM_PROFILELEVELTYPE;
-
-/**
- * Structure for dynamically configuring bitrate mode of a codec.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the struct in bytes
- * nVersion : OMX spec version info
- * nPortIndex : Port that this struct applies to
- * nEncodeBitrate : Target average bitrate to be generated in bps
- */
-typedef struct OMX_VIDEO_CONFIG_BITRATETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nEncodeBitrate;
-} OMX_VIDEO_CONFIG_BITRATETYPE;
-
-/**
- * Defines Encoder Frame Rate setting
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * xEncodeFramerate : Encoding framerate represented in Q16 format
- */
-typedef struct OMX_CONFIG_FRAMERATETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 xEncodeFramerate; /* Q16 format */
-} OMX_CONFIG_FRAMERATETYPE;
-
-typedef struct OMX_CONFIG_INTRAREFRESHVOPTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL IntraRefreshVOP;
-} OMX_CONFIG_INTRAREFRESHVOPTYPE;
-
-typedef struct OMX_CONFIG_MACROBLOCKERRORMAPTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nErrMapSize; /* Size of the Error Map in bytes */
- OMX_U8 ErrMap[1]; /* Error map hint */
-} OMX_CONFIG_MACROBLOCKERRORMAPTYPE;
-
-typedef struct OMX_CONFIG_MBERRORREPORTINGTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bEnabled;
-} OMX_CONFIG_MBERRORREPORTINGTYPE;
-
-typedef struct OMX_PARAM_MACROBLOCKSTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nMacroblocks;
-} OMX_PARAM_MACROBLOCKSTYPE;
-
-/**
- * AVC Slice Mode modes
- *
- * OMX_VIDEO_SLICEMODE_AVCDefault : Normal frame encoding, one slice per frame
- * OMX_VIDEO_SLICEMODE_AVCMBSlice : NAL mode, number of MBs per frame
- * OMX_VIDEO_SLICEMODE_AVCByteSlice : NAL mode, number of bytes per frame
- */
-typedef enum OMX_VIDEO_AVCSLICEMODETYPE {
- OMX_VIDEO_SLICEMODE_AVCDefault = 0,
- OMX_VIDEO_SLICEMODE_AVCMBSlice,
- OMX_VIDEO_SLICEMODE_AVCByteSlice,
- OMX_VIDEO_SLICEMODE_AVCKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_SLICEMODE_AVCVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_SLICEMODE_AVCLevelMax = 0x7FFFFFFF
-} OMX_VIDEO_AVCSLICEMODETYPE;
-
-/**
- * AVC FMO Slice Mode Params
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nNumSliceGroups : Specifies the number of slice groups
- * nSliceGroupMapType : Specifies the type of slice groups
- * eSliceMode : Specifies the type of slice
- */
-typedef struct OMX_VIDEO_PARAM_AVCSLICEFMO {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U8 nNumSliceGroups;
- OMX_U8 nSliceGroupMapType;
- OMX_VIDEO_AVCSLICEMODETYPE eSliceMode;
-} OMX_VIDEO_PARAM_AVCSLICEFMO;
-
-/**
- * AVC IDR Period Configs
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nIDRPeriod : Specifies periodicity of IDR frames
- * nPFrames : Specifies internal of coding Intra frames
- */
-typedef struct OMX_VIDEO_CONFIG_AVCINTRAPERIOD {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nIDRPeriod;
- OMX_U32 nPFrames;
-} OMX_VIDEO_CONFIG_AVCINTRAPERIOD;
-
-/**
- * AVC NAL Size Configs
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nNaluBytes : Specifies the NAL unit size
- */
-typedef struct OMX_VIDEO_CONFIG_NALSIZE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nNaluBytes;
-} OMX_VIDEO_CONFIG_NALSIZE;
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
-
diff --git a/include/private/media/VideoFrame.h b/include/private/media/VideoFrame.h
index 3aff0c6..0ecc348 100644
--- a/include/private/media/VideoFrame.h
+++ b/include/private/media/VideoFrame.h
@@ -26,7 +26,7 @@
namespace android {
// A simple buffer to hold binary data
-class MediaAlbumArt
+class MediaAlbumArt
{
public:
MediaAlbumArt(): mSize(0), mData(0) {}
@@ -57,9 +57,9 @@ public:
fclose(in);
}
- MediaAlbumArt(const MediaAlbumArt& copy) {
- mSize = copy.mSize;
- mData = NULL; // initialize it first
+ MediaAlbumArt(const MediaAlbumArt& copy) {
+ mSize = copy.mSize;
+ mData = NULL; // initialize it first
if (mSize > 0 && copy.mData != NULL) {
mData = new uint8_t[copy.mSize];
if (mData != NULL) {
@@ -89,7 +89,7 @@ class VideoFrame
{
public:
VideoFrame(): mWidth(0), mHeight(0), mDisplayWidth(0), mDisplayHeight(0), mSize(0), mData(0) {}
-
+
VideoFrame(const VideoFrame& copy) {
mWidth = copy.mWidth;
mHeight = copy.mHeight;
diff --git a/libs/androidfw/Input.cpp b/libs/androidfw/Input.cpp
index ca09caf..da57839 100644
--- a/libs/androidfw/Input.cpp
+++ b/libs/androidfw/Input.cpp
@@ -683,6 +683,58 @@ bool MotionEvent::isTouchEvent(int32_t source, int32_t action) {
}
+// --- PooledInputEventFactory ---
+
+PooledInputEventFactory::PooledInputEventFactory(size_t maxPoolSize) :
+ mMaxPoolSize(maxPoolSize) {
+}
+
+PooledInputEventFactory::~PooledInputEventFactory() {
+ for (size_t i = 0; i < mKeyEventPool.size(); i++) {
+ delete mKeyEventPool.itemAt(i);
+ }
+ for (size_t i = 0; i < mMotionEventPool.size(); i++) {
+ delete mMotionEventPool.itemAt(i);
+ }
+}
+
+KeyEvent* PooledInputEventFactory::createKeyEvent() {
+ if (!mKeyEventPool.isEmpty()) {
+ KeyEvent* event = mKeyEventPool.top();
+ mKeyEventPool.pop();
+ return event;
+ }
+ return new KeyEvent();
+}
+
+MotionEvent* PooledInputEventFactory::createMotionEvent() {
+ if (!mMotionEventPool.isEmpty()) {
+ MotionEvent* event = mMotionEventPool.top();
+ mMotionEventPool.pop();
+ return event;
+ }
+ return new MotionEvent();
+}
+
+void PooledInputEventFactory::recycle(InputEvent* event) {
+ switch (event->getType()) {
+ case AINPUT_EVENT_TYPE_KEY:
+ if (mKeyEventPool.size() < mMaxPoolSize) {
+ mKeyEventPool.push(static_cast<KeyEvent*>(event));
+ return;
+ }
+ break;
+ case AINPUT_EVENT_TYPE_MOTION:
+ if (mMotionEventPool.size() < mMaxPoolSize) {
+ mMotionEventPool.push(static_cast<MotionEvent*>(event));
+ return;
+ }
+ break;
+ }
+ delete event;
+}
+
+
// --- VelocityTracker ---
const uint32_t VelocityTracker::DEFAULT_DEGREE;
diff --git a/libs/androidfw/InputTransport.cpp b/libs/androidfw/InputTransport.cpp
index 1ebd75c..294236f 100644
--- a/libs/androidfw/InputTransport.cpp
+++ b/libs/androidfw/InputTransport.cpp
@@ -527,6 +527,10 @@ status_t InputConsumer::sendUnchainedFinishedSignal(uint32_t seq, bool handled)
return mChannel->sendMessage(&msg);
}
+bool InputConsumer::hasDeferredEvent() const {
+ return mMsgDeferred;
+}
+
bool InputConsumer::hasPendingBatch() const {
return !mBatches.isEmpty();
}
diff --git a/libs/hwui/DisplayListRenderer.cpp b/libs/hwui/DisplayListRenderer.cpp
index 24f4f1c..a884d8e 100644
--- a/libs/hwui/DisplayListRenderer.cpp
+++ b/libs/hwui/DisplayListRenderer.cpp
@@ -16,11 +16,11 @@
#define LOG_TAG "OpenGLRenderer"
+#include <SkCamera.h>
#include "DisplayListLogBuffer.h"
#include "DisplayListRenderer.h"
#include "Caches.h"
-#include "SkCamera.h"
namespace android {
namespace uirenderer {
@@ -91,7 +91,9 @@ void DisplayList::outputLogBuffer(int fd) {
fflush(file);
}
-DisplayList::DisplayList(const DisplayListRenderer& recorder) {
+DisplayList::DisplayList(const DisplayListRenderer& recorder) :
+ mTransformMatrix(NULL), mTransformCamera(NULL), mTransformMatrix3D(NULL) {
+
initFromDisplayListRenderer(recorder);
}
@@ -124,9 +126,6 @@ void DisplayList::initProperties() {
mWidth = 0;
mHeight = 0;
mPivotExplicitlySet = false;
- mTransformMatrix = NULL;
- mTransformCamera = NULL;
- mTransformMatrix3D = NULL;
mCaching = false;
}
@@ -140,17 +139,19 @@ void DisplayList::destroyDisplayListDeferred(DisplayList* displayList) {
void DisplayList::clearResources() {
sk_free((void*) mReader.base());
- if (mTransformMatrix) {
- delete mTransformMatrix;
- mTransformMatrix = NULL;
- }
- if (mTransformCamera) {
- delete mTransformCamera;
- mTransformCamera = NULL;
- }
- if (mTransformMatrix3D) {
- delete mTransformMatrix3D;
- mTransformMatrix3D = NULL;
+ if (USE_DISPLAY_LIST_PROPERTIES) {
+ if (mTransformMatrix) {
+ delete mTransformMatrix;
+ mTransformMatrix = NULL;
+ }
+ if (mTransformCamera) {
+ delete mTransformCamera;
+ mTransformCamera = NULL;
+ }
+ if (mTransformMatrix3D) {
+ delete mTransformMatrix3D;
+ mTransformMatrix3D = NULL;
+ }
}
Caches& caches = Caches::getInstance();
@@ -825,7 +826,7 @@ bool DisplayList::replay(OpenGLRenderer& renderer, uint32_t width,
while (!mReader.eof()) {
int op = mReader.readInt();
if (op & OP_MAY_BE_SKIPPED_MASK) {
- int32_t skip = mReader.readInt() * 4;
+ int32_t skip = mReader.readInt();
if (CC_LIKELY(flags & kReplayFlag_ClipChildren)) {
mReader.skip(skip);
DISPLAY_LIST_LOGD("%s%s skipping %d bytes", (char*) indent,
diff --git a/libs/hwui/DisplayListRenderer.h b/libs/hwui/DisplayListRenderer.h
index abe8b82..43617e7 100644
--- a/libs/hwui/DisplayListRenderer.h
+++ b/libs/hwui/DisplayListRenderer.h
@@ -656,9 +656,8 @@ private:
if (reject) {
mWriter.writeInt(OP_MAY_BE_SKIPPED_MASK | drawOp);
mWriter.writeInt(0xdeaddead);
- uint32_t* location = reject ?
- mWriter.peek32(mWriter.size() - sizeof(int32_t)) : NULL;
- return location;
+ mBufferSize = mWriter.size();
+ return mWriter.peek32(mBufferSize - sizeof(int32_t));
}
mWriter.writeInt(drawOp);
return NULL;
@@ -666,8 +665,7 @@ private:
inline void addSkip(uint32_t* location) {
if (location) {
- *location = (int32_t) (mWriter.peek32(
- mWriter.size() - sizeof(int32_t)) - location);
+ *location = (int32_t) (mWriter.size() - mBufferSize);
}
}
@@ -822,6 +820,7 @@ private:
Vector<SkMatrix*> mMatrices;
SkWriter32 mWriter;
+ uint32_t mBufferSize;
int mRestoreSaveCount;
diff --git a/libs/rs/tests/Android.mk b/libs/rs/tests/Android.mk
index 197e862..627ff72 100644
--- a/libs/rs/tests/Android.mk
+++ b/libs/rs/tests/Android.mk
@@ -22,9 +22,15 @@ LOCAL_MODULE:= rstest-compute
LOCAL_MODULE_TAGS := tests
-LOCAL_C_INCLUDES += .. \
- frameworks/base/libs/rs \
- out/target/product/stingray/obj/SHARED_LIBRARIES/libRS_intermediates
+intermediates := $(call intermediates-dir-for,STATIC_LIBRARIES,libRS,TARGET,)
+librs_generated_headers := \
+ $(intermediates)/rsgApiStructs.h \
+ $(intermediates)/rsgApiFuncDecl.h
+LOCAL_GENERATED_SOURCES := $(librs_generated_headers)
+
+LOCAL_C_INCLUDES += frameworks/base/libs/rs
+LOCAL_C_INCLUDES += $(intermediates)
+
include $(BUILD_EXECUTABLE)
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index 139ff01..4e6c174 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -1155,6 +1155,26 @@ public class MediaPlayer
}
/**
+ * Set the MediaPlayer to start when this MediaPlayer finishes playback
+ * (i.e. reaches the end of the stream).
+ * The media framework will attempt to transition from this player to
+ * the next as seamlessly as possible. The next player can be set at
+ * any time before completion. The next player must be prepared by the
+ * app, and the application should not call start() on it.
+ * The next MediaPlayer must be different from 'this'. An exception
+ * will be thrown if next == this.
+ * The application may call setNextMediaPlayer(null) to indicate no
+ * next player should be started at the end of playback.
+ * If the current player is looping, it will keep looping and the next
+ * player will not be started.
+ *
+ * @param next the player to start after this one completes playback.
+ *
+ * @hide
+ */
+ public native void setNextMediaPlayer(MediaPlayer next);
+
+ /**
* Releases resources associated with this MediaPlayer object.
* It is considered good practice to call this method when you're
* done using the MediaPlayer. In particular, whenever an Activity
@@ -1659,6 +1679,10 @@ public class MediaPlayer
return;
}
+ if (what == MEDIA_INFO && arg1 == MEDIA_INFO_STARTED_AS_NEXT) {
+ // this acquires the wakelock if needed, and sets the client side state
+ mp.start();
+ }
if (mp.mEventHandler != null) {
Message m = mp.mEventHandler.obtainMessage(what, arg1, arg2, obj);
mp.mEventHandler.sendMessage(m);
@@ -1913,6 +1937,13 @@ public class MediaPlayer
*/
public static final int MEDIA_INFO_UNKNOWN = 1;
+ /** The player was started because it was used as the next player for another
+ * player, which just completed playback.
+ * @see android.media.MediaPlayer.OnInfoListener
+ * @hide
+ */
+ public static final int MEDIA_INFO_STARTED_AS_NEXT = 2;
+
/** The video is too complex for the decoder: it can't decode frames fast
* enough. Possibly only the audio plays fine at this stage.
* @see android.media.MediaPlayer.OnInfoListener
diff --git a/media/jni/Android.mk b/media/jni/Android.mk
index 070d2d9..a98275a 100644
--- a/media/jni/Android.mk
+++ b/media/jni/Android.mk
@@ -47,7 +47,7 @@ LOCAL_C_INCLUDES += \
frameworks/base/media/libstagefright/codecs/amrnb/common \
frameworks/base/media/libstagefright/codecs/amrnb/common/include \
frameworks/base/media/mtp \
- frameworks/base/include/media/stagefright/openmax \
+ frameworks/native/include/media/openmax \
$(PV_INCLUDES) \
$(JNI_H_INCLUDE) \
$(call include-path-for, corecg graphics)
diff --git a/media/jni/android_media_MediaPlayer.cpp b/media/jni/android_media_MediaPlayer.cpp
index f572f71..745e253 100644
--- a/media/jni/android_media_MediaPlayer.cpp
+++ b/media/jni/android_media_MediaPlayer.cpp
@@ -795,6 +795,33 @@ android_media_MediaPlayer_getParameter(JNIEnv *env, jobject thiz, jint key, jobj
process_media_player_call(env, thiz, mp->getParameter(key, reply), NULL, NULL );
}
+static void
+android_media_MediaPlayer_setNextMediaPlayer(JNIEnv *env, jobject thiz, jobject java_player)
+{
+ ALOGV("setNextMediaPlayer");
+ sp<MediaPlayer> thisplayer = getMediaPlayer(env, thiz);
+ if (thisplayer == NULL) {
+ jniThrowException(env, "java/lang/IllegalStateException", "This player not initialized");
+ return;
+ }
+ sp<MediaPlayer> nextplayer = (java_player == NULL) ? NULL : getMediaPlayer(env, java_player);
+ if (nextplayer == NULL && java_player != NULL) {
+ jniThrowException(env, "java/lang/IllegalStateException", "That player not initialized");
+ return;
+ }
+
+ if (nextplayer == thisplayer) {
+ jniThrowException(env, "java/lang/IllegalArgumentException", "Next player can't be self");
+ return;
+ }
+ // tie the two players together
+ process_media_player_call(
+ env, thiz, thisplayer->setNextMediaPlayer(nextplayer),
+ "java/lang/IllegalArgumentException",
+ "setNextMediaPlayer failed." );
+ ;
+}
+
// ----------------------------------------------------------------------------
static JNINativeMethod gMethods[] = {
@@ -840,6 +867,7 @@ static JNINativeMethod gMethods[] = {
{"setParameter", "(ILandroid/os/Parcel;)Z", (void *)android_media_MediaPlayer_setParameter},
{"getParameter", "(ILandroid/os/Parcel;)V", (void *)android_media_MediaPlayer_getParameter},
{"native_setRetransmitEndpoint", "(Ljava/lang/String;I)I", (void *)android_media_MediaPlayer_setRetransmitEndpoint},
+ {"setNextMediaPlayer", "(Landroid/media/MediaPlayer;)V", (void *)android_media_MediaPlayer_setNextMediaPlayer},
};
static const char* const kClassPathName = "android/media/MediaPlayer";
diff --git a/media/jni/mediaeditor/Android.mk b/media/jni/mediaeditor/Android.mk
index 6003608..688e180 100755
--- a/media/jni/mediaeditor/Android.mk
+++ b/media/jni/mediaeditor/Android.mk
@@ -36,14 +36,15 @@ LOCAL_C_INCLUDES += \
$(TOP)/frameworks/base/media/libstagefright/rtsp \
$(JNI_H_INCLUDE) \
$(call include-path-for, corecg graphics) \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
+ $(TOP)/frameworks/native/include/media/editor \
$(TOP)/frameworks/base/core/jni/mediaeditor \
$(TOP)/frameworks/media/libvideoeditor/vss/inc \
$(TOP)/frameworks/media/libvideoeditor/vss/common/inc \
$(TOP)/frameworks/media/libvideoeditor/vss/mcs/inc \
$(TOP)/frameworks/media/libvideoeditor/vss/stagefrightshells/inc \
$(TOP)/frameworks/media/libvideoeditor/lvpp \
- $(TOP)/frameworks/media/libvideoeditor/osal/inc
+ $(TOP)/frameworks/media/libvideoeditor/osal/inc \
+ $(TOP)/frameworks/native/include/media/openmax
LOCAL_SHARED_LIBRARIES := \
libaudioutils \
diff --git a/media/libaah_rtp/Android.mk b/media/libaah_rtp/Android.mk
index 54fd9ec..1e87cf0 100644
--- a/media/libaah_rtp/Android.mk
+++ b/media/libaah_rtp/Android.mk
@@ -21,9 +21,9 @@ LOCAL_SRC_FILES := \
LOCAL_C_INCLUDES := \
frameworks/base/include \
- frameworks/base/include/media/stagefright/openmax \
frameworks/base/media \
- frameworks/base/media/libstagefright
+ frameworks/base/media/libstagefright \
+ frameworks/native/include/media/openmax
LOCAL_SHARED_LIBRARIES := \
libcommon_time_client \
diff --git a/media/libmedia/Android.mk b/media/libmedia/Android.mk
index 23670df..5ecc8f5 100644
--- a/media/libmedia/Android.mk
+++ b/media/libmedia/Android.mk
@@ -57,7 +57,7 @@ LOCAL_MODULE:= libmedia
LOCAL_C_INCLUDES := \
$(JNI_H_INCLUDE) \
$(call include-path-for, graphics corecg) \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
+ $(TOP)/frameworks/native/include/media/openmax \
external/icu4c/common \
external/expat/lib \
system/media/audio_effects/include \
diff --git a/media/libmedia/AudioEffect.cpp b/media/libmedia/AudioEffect.cpp
index 6808aa2..34451ca 100644
--- a/media/libmedia/AudioEffect.cpp
+++ b/media/libmedia/AudioEffect.cpp
@@ -174,7 +174,7 @@ AudioEffect::~AudioEffect()
mIEffect->disconnect();
mIEffect->asBinder()->unlinkToDeath(mIEffectClient);
}
- IPCThreadState::self()->flushCommands();
+ IPCThreadState::self()->flushCommands();
}
mIEffect.clear();
mIEffectClient.clear();
@@ -480,4 +480,3 @@ status_t AudioEffect::guidToString(const effect_uuid_t *guid, char *str, size_t
}; // namespace android
-
diff --git a/media/libmedia/AudioRecord.cpp b/media/libmedia/AudioRecord.cpp
index 22c3a18..05ade75 100644
--- a/media/libmedia/AudioRecord.cpp
+++ b/media/libmedia/AudioRecord.cpp
@@ -293,13 +293,13 @@ status_t AudioRecord::start()
return WOULD_BLOCK;
}
}
- }
+ }
AutoMutex lock(mLock);
// acquire a strong reference on the IAudioRecord and IMemory so that they cannot be destroyed
// while we are accessing the cblk
- sp <IAudioRecord> audioRecord = mAudioRecord;
- sp <IMemory> iMem = mCblkMemory;
+ sp<IAudioRecord> audioRecord = mAudioRecord;
+ sp<IMemory> iMem = mCblkMemory;
audio_track_cblk_t* cblk = mCblk;
if (mActive == 0) {
mActive = 1;
@@ -638,8 +638,8 @@ ssize_t AudioRecord::read(void* buffer, size_t userSize)
mLock.lock();
// acquire a strong reference on the IAudioRecord and IMemory so that they cannot be destroyed
// while we are accessing the cblk
- sp <IAudioRecord> audioRecord = mAudioRecord;
- sp <IMemory> iMem = mCblkMemory;
+ sp<IAudioRecord> audioRecord = mAudioRecord;
+ sp<IMemory> iMem = mCblkMemory;
mLock.unlock();
do {
@@ -684,8 +684,8 @@ bool AudioRecord::processAudioBuffer(const sp<ClientRecordThread>& thread)
mLock.lock();
// acquire a strong reference on the IAudioRecord and IMemory so that they cannot be destroyed
// while we are accessing the cblk
- sp <IAudioRecord> audioRecord = mAudioRecord;
- sp <IMemory> iMem = mCblkMemory;
+ sp<IAudioRecord> audioRecord = mAudioRecord;
+ sp<IMemory> iMem = mCblkMemory;
audio_track_cblk_t* cblk = mCblk;
mLock.unlock();
@@ -806,7 +806,7 @@ status_t AudioRecord::restoreRecord_l(audio_track_cblk_t*& cblk)
}
}
ALOGV("restoreRecord_l() status %d mActive %d cblk %p, old cblk %p flags %08x old flags %08x",
- result, mActive, mCblk, cblk, mCblk->flags, cblk->flags);
+ result, mActive, mCblk, cblk, mCblk->flags, cblk->flags);
if (result == NO_ERROR) {
// from now on we switch to the newly created cblk
@@ -843,4 +843,3 @@ status_t AudioRecord::ClientRecordThread::readyToRun()
// -------------------------------------------------------------------------
}; // namespace android
-
diff --git a/media/libmedia/AudioSystem.cpp b/media/libmedia/AudioSystem.cpp
index a1cbf0f..33c7d03 100644
--- a/media/libmedia/AudioSystem.cpp
+++ b/media/libmedia/AudioSystem.cpp
@@ -59,14 +59,14 @@ const sp<IAudioFlinger>& AudioSystem::get_audio_flinger()
break;
ALOGW("AudioFlinger not published, waiting...");
usleep(500000); // 0.5 s
- } while(true);
+ } while (true);
if (gAudioFlingerClient == NULL) {
gAudioFlingerClient = new AudioFlingerClient();
} else {
if (gAudioErrorCallback) {
gAudioErrorCallback(NO_ERROR);
}
- }
+ }
binder->linkToDeath(gAudioFlingerClient);
gAudioFlinger = interface_cast<IAudioFlinger>(binder);
gAudioFlinger->registerClient(gAudioFlingerClient);
@@ -482,7 +482,7 @@ void AudioSystem::setErrorCallback(audio_error_callback cb) {
}
bool AudioSystem::routedToA2dpOutput(audio_stream_type_t streamType) {
- switch(streamType) {
+ switch (streamType) {
case AUDIO_STREAM_MUSIC:
case AUDIO_STREAM_VOICE_CALL:
case AUDIO_STREAM_BLUETOOTH_SCO:
@@ -512,7 +512,7 @@ const sp<IAudioPolicyService>& AudioSystem::get_audio_policy_service()
break;
ALOGW("AudioPolicyService not published, waiting...");
usleep(500000); // 0.5 s
- } while(true);
+ } while (true);
if (gAudioPolicyServiceClient == NULL) {
gAudioPolicyServiceClient = new AudioPolicyServiceClient();
}
@@ -768,4 +768,3 @@ void AudioSystem::AudioPolicyServiceClient::binderDied(const wp<IBinder>& who) {
}
}; // namespace android
-
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp
index 34563ca..048be1d 100644
--- a/media/libmedia/AudioTrack.cpp
+++ b/media/libmedia/AudioTrack.cpp
@@ -72,7 +72,7 @@ status_t AudioTrack::getMinFrameCount(
if (minBufCount < 2) minBufCount = 2;
*frameCount = (sampleRate == 0) ? afFrameCount * minBufCount :
- afFrameCount * minBufCount * sampleRate / afSampleRate;
+ afFrameCount * minBufCount * sampleRate / afSampleRate;
return NO_ERROR;
}
@@ -352,13 +352,13 @@ void AudioTrack::start()
return;
}
}
- }
+ }
AutoMutex lock(mLock);
// acquire a strong reference on the IMemory and IAudioTrack so that they cannot be destroyed
// while we are accessing the cblk
- sp <IAudioTrack> audioTrack = mAudioTrack;
- sp <IMemory> iMem = mCblkMemory;
+ sp<IAudioTrack> audioTrack = mAudioTrack;
+ sp<IMemory> iMem = mCblkMemory;
audio_track_cblk_t* cblk = mCblk;
if (!mActive) {
@@ -743,8 +743,8 @@ status_t AudioTrack::createTrack_l(
status_t status;
const sp<IAudioFlinger>& audioFlinger = AudioSystem::get_audio_flinger();
if (audioFlinger == 0) {
- ALOGE("Could not get audioflinger");
- return NO_INIT;
+ ALOGE("Could not get audioflinger");
+ return NO_INIT;
}
int afSampleRate;
@@ -830,7 +830,7 @@ status_t AudioTrack::createTrack_l(
mCblk->buffers = (char*)mCblk + sizeof(audio_track_cblk_t);
} else {
mCblk->buffers = sharedBuffer->pointer();
- // Force buffer full condition as data is already present in shared memory
+ // Force buffer full condition as data is already present in shared memory
mCblk->stepUser(mCblk->frameCount);
}
@@ -991,8 +991,8 @@ ssize_t AudioTrack::write(const void* buffer, size_t userSize)
// acquire a strong reference on the IMemory and IAudioTrack so that they cannot be destroyed
// while we are accessing the cblk
mLock.lock();
- sp <IAudioTrack> audioTrack = mAudioTrack;
- sp <IMemory> iMem = mCblkMemory;
+ sp<IAudioTrack> audioTrack = mAudioTrack;
+ sp<IMemory> iMem = mCblkMemory;
mLock.unlock();
ssize_t written = 0;
@@ -1095,8 +1095,8 @@ bool AudioTrack::processAudioBuffer(const sp<AudioTrackThread>& thread)
mLock.lock();
// acquire a strong reference on the IMemory and IAudioTrack so that they cannot be destroyed
// while we are accessing the cblk
- sp <IAudioTrack> audioTrack = mAudioTrack;
- sp <IMemory> iMem = mCblkMemory;
+ sp<IAudioTrack> audioTrack = mAudioTrack;
+ sp<IMemory> iMem = mCblkMemory;
audio_track_cblk_t* cblk = mCblk;
bool active = mActive;
mLock.unlock();
@@ -1224,7 +1224,7 @@ status_t AudioTrack::restoreTrack_l(audio_track_cblk_t*& cblk, bool fromStart)
if (!(android_atomic_or(CBLK_RESTORING_ON, &cblk->flags) & CBLK_RESTORING_MSK)) {
ALOGW("dead IAudioTrack, creating a new one from %s TID %d",
- fromStart ? "start()" : "obtainBuffer()", gettid());
+ fromStart ? "start()" : "obtainBuffer()", gettid());
// signal old cblk condition so that other threads waiting for available buffers stop
// waiting now
@@ -1310,7 +1310,7 @@ status_t AudioTrack::restoreTrack_l(audio_track_cblk_t*& cblk, bool fromStart)
}
}
ALOGV("restoreTrack_l() status %d mActive %d cblk %p, old cblk %p flags %08x old flags %08x",
- result, mActive, mCblk, cblk, mCblk->flags, cblk->flags);
+ result, mActive, mCblk, cblk, mCblk->flags, cblk->flags);
if (result == NO_ERROR) {
// from now on we switch to the newly created cblk
diff --git a/media/libmedia/IAudioFlinger.cpp b/media/libmedia/IAudioFlinger.cpp
index 47c261da..07b12e4 100644
--- a/media/libmedia/IAudioFlinger.cpp
+++ b/media/libmedia/IAudioFlinger.cpp
@@ -622,11 +622,11 @@ public:
sp<IEffect> effect;
if (pDesc == NULL) {
- return effect;
- if (status) {
- *status = BAD_VALUE;
- }
- }
+ return effect;
+ if (status) {
+ *status = BAD_VALUE;
+ }
+ }
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
data.writeInt32(pid);
@@ -679,7 +679,7 @@ IMPLEMENT_META_INTERFACE(AudioFlinger, "android.media.IAudioFlinger");
status_t BnAudioFlinger::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
- switch(code) {
+ switch (code) {
case CREATE_TRACK: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
pid_t pid = data.readInt32();
@@ -745,7 +745,7 @@ status_t BnAudioFlinger::onTransact(
reply->writeInt32( latency((audio_io_handle_t) data.readInt32()) );
return NO_ERROR;
} break;
- case SET_MASTER_VOLUME: {
+ case SET_MASTER_VOLUME: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
reply->writeInt32( setMasterVolume(data.readFloat()) );
return NO_ERROR;
@@ -815,14 +815,14 @@ status_t BnAudioFlinger::onTransact(
String8 keyValuePairs(data.readString8());
reply->writeInt32(setParameters(ioHandle, keyValuePairs));
return NO_ERROR;
- } break;
+ } break;
case GET_PARAMETERS: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
audio_io_handle_t ioHandle = (audio_io_handle_t) data.readInt32();
String8 keys(data.readString8());
reply->writeString8(getParameters(ioHandle, keys));
return NO_ERROR;
- } break;
+ } break;
case REGISTER_CLIENT: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
diff --git a/media/libmedia/IAudioFlingerClient.cpp b/media/libmedia/IAudioFlingerClient.cpp
index 1db39a3..4178b29 100644
--- a/media/libmedia/IAudioFlingerClient.cpp
+++ b/media/libmedia/IAudioFlingerClient.cpp
@@ -68,7 +68,7 @@ IMPLEMENT_META_INTERFACE(AudioFlingerClient, "android.media.IAudioFlingerClient"
status_t BnAudioFlingerClient::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
- switch(code) {
+ switch (code) {
case IO_CONFIG_CHANGED: {
CHECK_INTERFACE(IAudioFlingerClient, data, reply);
int event = data.readInt32();
diff --git a/media/libmedia/IAudioPolicyService.cpp b/media/libmedia/IAudioPolicyService.cpp
index da7c124..5040bd9 100644
--- a/media/libmedia/IAudioPolicyService.cpp
+++ b/media/libmedia/IAudioPolicyService.cpp
@@ -365,7 +365,7 @@ IMPLEMENT_META_INTERFACE(AudioPolicyService, "android.media.IAudioPolicyService"
status_t BnAudioPolicyService::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
- switch(code) {
+ switch (code) {
case SET_DEVICE_CONNECTION_STATE: {
CHECK_INTERFACE(IAudioPolicyService, data, reply);
audio_devices_t device =
diff --git a/media/libmedia/IAudioRecord.cpp b/media/libmedia/IAudioRecord.cpp
index 6b473c9..377b9a8 100644
--- a/media/libmedia/IAudioRecord.cpp
+++ b/media/libmedia/IAudioRecord.cpp
@@ -2,16 +2,16 @@
**
** Copyright 2007, 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
+** 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
+** 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
+** 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.
*/
@@ -41,7 +41,7 @@ public:
: BpInterface<IAudioRecord>(impl)
{
}
-
+
virtual status_t start(pid_t tid)
{
Parcel data, reply;
@@ -55,14 +55,14 @@ public:
}
return status;
}
-
+
virtual void stop()
{
Parcel data, reply;
data.writeInterfaceToken(IAudioRecord::getInterfaceDescriptor());
remote()->transact(STOP, data, &reply);
}
-
+
virtual sp<IMemory> getCblk() const
{
Parcel data, reply;
@@ -73,7 +73,7 @@ public:
cblk = interface_cast<IMemory>(reply.readStrongBinder());
}
return cblk;
- }
+ }
};
IMPLEMENT_META_INTERFACE(AudioRecord, "android.media.IAudioRecord");
@@ -83,8 +83,8 @@ IMPLEMENT_META_INTERFACE(AudioRecord, "android.media.IAudioRecord");
status_t BnAudioRecord::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
- switch(code) {
- case GET_CBLK: {
+ switch (code) {
+ case GET_CBLK: {
CHECK_INTERFACE(IAudioRecord, data, reply);
reply->writeStrongBinder(getCblk()->asBinder());
return NO_ERROR;
@@ -105,4 +105,3 @@ status_t BnAudioRecord::onTransact(
}
}; // namespace android
-
diff --git a/media/libmedia/IAudioTrack.cpp b/media/libmedia/IAudioTrack.cpp
index 28ebbbf..09f31a7 100644
--- a/media/libmedia/IAudioTrack.cpp
+++ b/media/libmedia/IAudioTrack.cpp
@@ -2,16 +2,16 @@
**
** Copyright 2007, 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
+** 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
+** 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
+** 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.
*/
@@ -48,7 +48,7 @@ public:
: BpInterface<IAudioTrack>(impl)
{
}
-
+
virtual sp<IMemory> getCblk() const
{
Parcel data, reply;
@@ -74,14 +74,14 @@ public:
}
return status;
}
-
+
virtual void stop()
{
Parcel data, reply;
data.writeInterfaceToken(IAudioTrack::getInterfaceDescriptor());
remote()->transact(STOP, data, &reply);
}
-
+
virtual void flush()
{
Parcel data, reply;
@@ -96,14 +96,14 @@ public:
data.writeInt32(e);
remote()->transact(MUTE, data, &reply);
}
-
+
virtual void pause()
{
Parcel data, reply;
data.writeInterfaceToken(IAudioTrack::getInterfaceDescriptor());
remote()->transact(PAUSE, data, &reply);
}
-
+
virtual status_t attachAuxEffect(int effectId)
{
Parcel data, reply;
@@ -172,8 +172,8 @@ IMPLEMENT_META_INTERFACE(AudioTrack, "android.media.IAudioTrack");
status_t BnAudioTrack::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
- switch(code) {
- case GET_CBLK: {
+ switch (code) {
+ case GET_CBLK: {
CHECK_INTERFACE(IAudioTrack, data, reply);
reply->writeStrongBinder(getCblk()->asBinder());
return NO_ERROR;
diff --git a/media/libmedia/IEffect.cpp b/media/libmedia/IEffect.cpp
index 5d40cc8..a303a8f 100644
--- a/media/libmedia/IEffect.cpp
+++ b/media/libmedia/IEffect.cpp
@@ -129,7 +129,7 @@ IMPLEMENT_META_INTERFACE(Effect, "android.media.IEffect");
status_t BnEffect::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
- switch(code) {
+ switch (code) {
case ENABLE: {
ALOGV("ENABLE");
CHECK_INTERFACE(IEffect, data, reply);
@@ -186,10 +186,10 @@ status_t BnEffect::onTransact(
} break;
case GET_CBLK: {
- CHECK_INTERFACE(IEffect, data, reply);
- reply->writeStrongBinder(getCblk()->asBinder());
- return NO_ERROR;
- } break;
+ CHECK_INTERFACE(IEffect, data, reply);
+ reply->writeStrongBinder(getCblk()->asBinder());
+ return NO_ERROR;
+ } break;
default:
return BBinder::onTransact(code, data, reply, flags);
@@ -199,4 +199,3 @@ status_t BnEffect::onTransact(
// ----------------------------------------------------------------------------
}; // namespace android
-
diff --git a/media/libmedia/IEffectClient.cpp b/media/libmedia/IEffectClient.cpp
index 4693b45..aef4371 100644
--- a/media/libmedia/IEffectClient.cpp
+++ b/media/libmedia/IEffectClient.cpp
@@ -94,7 +94,7 @@ IMPLEMENT_META_INTERFACE(EffectClient, "android.media.IEffectClient");
status_t BnEffectClient::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
- switch(code) {
+ switch (code) {
case CONTROL_STATUS_CHANGED: {
ALOGV("CONTROL_STATUS_CHANGED");
CHECK_INTERFACE(IEffectClient, data, reply);
@@ -142,4 +142,3 @@ status_t BnEffectClient::onTransact(
// ----------------------------------------------------------------------------
}; // namespace android
-
diff --git a/media/libmedia/IMediaDeathNotifier.cpp b/media/libmedia/IMediaDeathNotifier.cpp
index aeb35a5..9199db6 100644
--- a/media/libmedia/IMediaDeathNotifier.cpp
+++ b/media/libmedia/IMediaDeathNotifier.cpp
@@ -43,10 +43,10 @@ IMediaDeathNotifier::getMediaPlayerService()
binder = sm->getService(String16("media.player"));
if (binder != 0) {
break;
- }
- ALOGW("Media player service not published, waiting...");
- usleep(500000); // 0.5 s
- } while(true);
+ }
+ ALOGW("Media player service not published, waiting...");
+ usleep(500000); // 0.5 s
+ } while (true);
if (sDeathNotifier == NULL) {
sDeathNotifier = new DeathNotifier();
diff --git a/media/libmedia/IMediaPlayer.cpp b/media/libmedia/IMediaPlayer.cpp
index c47fa41..0bb237d 100644
--- a/media/libmedia/IMediaPlayer.cpp
+++ b/media/libmedia/IMediaPlayer.cpp
@@ -55,6 +55,7 @@ enum {
SET_PARAMETER,
GET_PARAMETER,
SET_RETRANSMIT_ENDPOINT,
+ SET_NEXT_PLAYER,
};
class BpMediaPlayer: public BpInterface<IMediaPlayer>
@@ -307,7 +308,15 @@ public:
if (OK != err) {
return err;
}
+ return reply.readInt32();
+ }
+ status_t setNextPlayer(const sp<IMediaPlayer>& player) {
+ Parcel data, reply;
+ data.writeInterfaceToken(IMediaPlayer::getInterfaceDescriptor());
+ sp<IBinder> b(player->asBinder());
+ data.writeStrongBinder(b);
+ remote()->transact(SET_NEXT_PLAYER, data, &reply);
return reply.readInt32();
}
};
@@ -319,7 +328,7 @@ IMPLEMENT_META_INTERFACE(MediaPlayer, "android.media.IMediaPlayer");
status_t BnMediaPlayer::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
- switch(code) {
+ switch (code) {
case DISCONNECT: {
CHECK_INTERFACE(IMediaPlayer, data, reply);
disconnect();
@@ -489,7 +498,11 @@ status_t BnMediaPlayer::onTransact(
} else {
reply->writeInt32(setRetransmitEndpoint(NULL));
}
-
+ return NO_ERROR;
+ } break;
+ case SET_NEXT_PLAYER: {
+ CHECK_INTERFACE(IMediaPlayer, data, reply);
+ reply->writeInt32(setNextPlayer(interface_cast<IMediaPlayer>(data.readStrongBinder())));
return NO_ERROR;
} break;
default:
diff --git a/media/libmedia/IMediaPlayerClient.cpp b/media/libmedia/IMediaPlayerClient.cpp
index 1f135c4..a670c96 100644
--- a/media/libmedia/IMediaPlayerClient.cpp
+++ b/media/libmedia/IMediaPlayerClient.cpp
@@ -56,7 +56,7 @@ IMPLEMENT_META_INTERFACE(MediaPlayerClient, "android.media.IMediaPlayerClient");
status_t BnMediaPlayerClient::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
- switch(code) {
+ switch (code) {
case NOTIFY: {
CHECK_INTERFACE(IMediaPlayerClient, data, reply);
int msg = data.readInt32();
diff --git a/media/libmedia/IMediaPlayerService.cpp b/media/libmedia/IMediaPlayerService.cpp
index f5b5cbd..f5fccef 100644
--- a/media/libmedia/IMediaPlayerService.cpp
+++ b/media/libmedia/IMediaPlayerService.cpp
@@ -132,7 +132,7 @@ IMPLEMENT_META_INTERFACE(MediaPlayerService, "android.media.IMediaPlayerService"
status_t BnMediaPlayerService::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
- switch(code) {
+ switch (code) {
case CREATE: {
CHECK_INTERFACE(IMediaPlayerService, data, reply);
pid_t pid = data.readInt32();
diff --git a/media/libmedia/IMediaRecorder.cpp b/media/libmedia/IMediaRecorder.cpp
index 2f4e31a..a710fd7 100644
--- a/media/libmedia/IMediaRecorder.cpp
+++ b/media/libmedia/IMediaRecorder.cpp
@@ -289,7 +289,7 @@ IMPLEMENT_META_INTERFACE(MediaRecorder, "android.media.IMediaRecorder");
status_t BnMediaRecorder::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
- switch(code) {
+ switch (code) {
case RELEASE: {
ALOGV("RELEASE");
CHECK_INTERFACE(IMediaRecorder, data, reply);
diff --git a/media/libmedia/IMediaRecorderClient.cpp b/media/libmedia/IMediaRecorderClient.cpp
index ff235c9..e7907e3 100644
--- a/media/libmedia/IMediaRecorderClient.cpp
+++ b/media/libmedia/IMediaRecorderClient.cpp
@@ -53,7 +53,7 @@ IMPLEMENT_META_INTERFACE(MediaRecorderClient, "android.media.IMediaRecorderClien
status_t BnMediaRecorderClient::onTransact(
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
- switch(code) {
+ switch (code) {
case NOTIFY: {
CHECK_INTERFACE(IMediaRecorderClient, data, reply);
int msg = data.readInt32();
diff --git a/media/libmedia/JetPlayer.cpp b/media/libmedia/JetPlayer.cpp
index a85956c..312a493 100644
--- a/media/libmedia/JetPlayer.cpp
+++ b/media/libmedia/JetPlayer.cpp
@@ -74,14 +74,14 @@ int JetPlayer::init()
// init the EAS library
result = EAS_Init(&mEasData);
- if( result != EAS_SUCCESS) {
+ if (result != EAS_SUCCESS) {
ALOGE("JetPlayer::init(): Error initializing Sonivox EAS library, aborting.");
mState = EAS_STATE_ERROR;
return result;
}
// init the JET library with the default app event controller range
result = JET_Init(mEasData, NULL, sizeof(S_JET_CONFIG));
- if( result != EAS_SUCCESS) {
+ if (result != EAS_SUCCESS) {
ALOGE("JetPlayer::init(): Error initializing JET library, aborting.");
mState = EAS_STATE_ERROR;
return result;
@@ -151,7 +151,7 @@ int JetPlayer::release()
mAudioBuffer = NULL;
}
mEasData = NULL;
-
+
return EAS_SUCCESS;
}
@@ -166,7 +166,7 @@ int JetPlayer::render() {
ALOGV("JetPlayer::render(): entering");
// allocate render buffer
- mAudioBuffer =
+ mAudioBuffer =
new EAS_PCM[pLibConfig->mixBufferSize * pLibConfig->numChannels * MIX_NUM_BUFFERS];
// signal main thread that we started
@@ -177,8 +177,8 @@ int JetPlayer::render() {
mCondition.signal();
}
- while (1) {
-
+ while (1) {
+
mMutex.lock(); // [[[[[[[[ LOCK ---------------------------------------
if (mEasData == NULL) {
@@ -186,20 +186,20 @@ int JetPlayer::render() {
ALOGV("JetPlayer::render(): NULL EAS data, exiting render.");
goto threadExit;
}
-
+
// nothing to render, wait for client thread to wake us up
while (!mRender)
{
ALOGV("JetPlayer::render(): signal wait");
- if (audioStarted) {
- mAudioTrack->pause();
+ if (audioStarted) {
+ mAudioTrack->pause();
// we have to restart the playback once we start rendering again
audioStarted = false;
}
mCondition.wait(mMutex);
ALOGV("JetPlayer::render(): signal rx'd");
}
-
+
// render midi data into the input buffer
int num_output = 0;
EAS_PCM* p = mAudioBuffer;
@@ -210,8 +210,8 @@ int JetPlayer::render() {
}
p += count * pLibConfig->numChannels;
num_output += count * pLibConfig->numChannels * sizeof(EAS_PCM);
-
- // send events that were generated (if any) to the event callback
+
+ // send events that were generated (if any) to the event callback
fireEventsFromJetQueue();
}
@@ -265,9 +265,9 @@ threadExit:
// precondition: mMutex locked
void JetPlayer::fireUpdateOnStatusChange()
{
- if( (mJetStatus.currentUserID != mPreviousJetStatus.currentUserID)
+ if ( (mJetStatus.currentUserID != mPreviousJetStatus.currentUserID)
||(mJetStatus.segmentRepeatCount != mPreviousJetStatus.segmentRepeatCount) ) {
- if(mEventCallback) {
+ if (mEventCallback) {
mEventCallback(
JetPlayer::JET_USERID_UPDATE,
mJetStatus.currentUserID,
@@ -278,8 +278,8 @@ void JetPlayer::fireUpdateOnStatusChange()
mPreviousJetStatus.segmentRepeatCount = mJetStatus.segmentRepeatCount;
}
- if(mJetStatus.numQueuedSegments != mPreviousJetStatus.numQueuedSegments) {
- if(mEventCallback) {
+ if (mJetStatus.numQueuedSegments != mPreviousJetStatus.numQueuedSegments) {
+ if (mEventCallback) {
mEventCallback(
JetPlayer::JET_NUMQUEUEDSEGMENT_UPDATE,
mJetStatus.numQueuedSegments,
@@ -289,8 +289,8 @@ void JetPlayer::fireUpdateOnStatusChange()
mPreviousJetStatus.numQueuedSegments = mJetStatus.numQueuedSegments;
}
- if(mJetStatus.paused != mPreviousJetStatus.paused) {
- if(mEventCallback) {
+ if (mJetStatus.paused != mPreviousJetStatus.paused) {
+ if (mEventCallback) {
mEventCallback(JetPlayer::JET_PAUSE_UPDATE,
mJetStatus.paused,
-1,
@@ -307,7 +307,7 @@ void JetPlayer::fireUpdateOnStatusChange()
// precondition: mMutex locked
void JetPlayer::fireEventsFromJetQueue()
{
- if(!mEventCallback) {
+ if (!mEventCallback) {
// no callback, just empty the event queue
while (JET_GetEvent(mEasData, NULL, NULL)) { }
return;
@@ -341,7 +341,7 @@ int JetPlayer::loadFromFile(const char* path)
mEasJetFileLoc->offset = 0;
EAS_RESULT result = JET_OpenFile(mEasData, mEasJetFileLoc);
- if(result != EAS_SUCCESS)
+ if (result != EAS_SUCCESS)
mState = EAS_STATE_ERROR;
else
mState = EAS_STATE_OPEN;
@@ -353,7 +353,7 @@ int JetPlayer::loadFromFile(const char* path)
int JetPlayer::loadFromFD(const int fd, const long long offset, const long long length)
{
ALOGV("JetPlayer::loadFromFD(): fd=%d offset=%lld length=%lld", fd, offset, length);
-
+
Mutex::Autolock lock(mMutex);
mEasJetFileLoc = (EAS_FILE_LOCATOR) malloc(sizeof(EAS_FILE));
@@ -361,9 +361,9 @@ int JetPlayer::loadFromFD(const int fd, const long long offset, const long long
mEasJetFileLoc->offset = offset;
mEasJetFileLoc->length = length;
mEasJetFileLoc->path = NULL;
-
+
EAS_RESULT result = JET_OpenFile(mEasData, mEasJetFileLoc);
- if(result != EAS_SUCCESS)
+ if (result != EAS_SUCCESS)
mState = EAS_STATE_ERROR;
else
mState = EAS_STATE_OPEN;
@@ -392,7 +392,7 @@ int JetPlayer::play()
JET_Status(mEasData, &mJetStatus);
this->dumpJetStatus(&mJetStatus);
-
+
fireUpdateOnStatusChange();
// wake up render thread
@@ -468,7 +468,7 @@ void JetPlayer::dump()
void JetPlayer::dumpJetStatus(S_JET_STATUS* pJetStatus)
{
- if(pJetStatus!=NULL)
+ if (pJetStatus!=NULL)
ALOGV(">> current JET player status: userID=%d segmentRepeatCount=%d numQueuedSegments=%d paused=%d",
pJetStatus->currentUserID, pJetStatus->segmentRepeatCount,
pJetStatus->numQueuedSegments, pJetStatus->paused);
@@ -478,4 +478,3 @@ void JetPlayer::dumpJetStatus(S_JET_STATUS* pJetStatus)
} // end namespace android
-
diff --git a/media/libmedia/MediaProfiles.cpp b/media/libmedia/MediaProfiles.cpp
index 93ddca8..c224f06 100644
--- a/media/libmedia/MediaProfiles.cpp
+++ b/media/libmedia/MediaProfiles.cpp
@@ -26,7 +26,7 @@
#include <expat.h>
#include <media/MediaProfiles.h>
#include <media/stagefright/foundation/ADebug.h>
-#include <media/stagefright/openmax/OMX_Video.h>
+#include <OMX_Video.h>
namespace android {
@@ -1099,12 +1099,12 @@ int MediaProfiles::getCamcorderProfileParamByName(const char *name,
camcorder_quality quality) const
{
ALOGV("getCamcorderProfileParamByName: %s for camera %d, quality %d",
- name, cameraId, quality);
+ name, cameraId, quality);
int index = getCamcorderProfileIndex(cameraId, quality);
if (index == -1) {
ALOGE("The given camcorder profile camera %d quality %d is not found",
- cameraId, quality);
+ cameraId, quality);
return -1;
}
diff --git a/media/libmedia/MediaScanner.cpp b/media/libmedia/MediaScanner.cpp
index 73d4519..28b5aa7 100644
--- a/media/libmedia/MediaScanner.cpp
+++ b/media/libmedia/MediaScanner.cpp
@@ -54,7 +54,7 @@ const char *MediaScanner::locale() const {
void MediaScanner::loadSkipList() {
mSkipList = (char *)malloc(PROPERTY_VALUE_MAX * sizeof(char));
if (mSkipList) {
- property_get("testing.mediascanner.skiplist", mSkipList, "");
+ property_get("testing.mediascanner.skiplist", mSkipList, "");
}
if (!mSkipList || (strlen(mSkipList) == 0)) {
free(mSkipList);
@@ -135,8 +135,8 @@ MediaScanResult MediaScanner::doProcessDirectory(
struct dirent* entry;
if (shouldSkipDirectory(path)) {
- ALOGD("Skipping: %s", path);
- return MEDIA_SCAN_RESULT_OK;
+ ALOGD("Skipping: %s", path);
+ return MEDIA_SCAN_RESULT_OK;
}
// Treat all files as non-media in directories that contain a ".nomedia" file
diff --git a/media/libmedia/MediaScannerClient.cpp b/media/libmedia/MediaScannerClient.cpp
index cdfd477..e1e3348 100644
--- a/media/libmedia/MediaScannerClient.cpp
+++ b/media/libmedia/MediaScannerClient.cpp
@@ -228,4 +228,3 @@ void MediaScannerClient::endFile()
}
} // namespace android
-
diff --git a/media/libmedia/Metadata.cpp b/media/libmedia/Metadata.cpp
index 546a9b0..ef8a9ed 100644
--- a/media/libmedia/Metadata.cpp
+++ b/media/libmedia/Metadata.cpp
@@ -57,7 +57,7 @@ namespace media {
Metadata::Metadata(Parcel *p)
:mData(p),
- mBegin(p->dataPosition()) { }
+ mBegin(p->dataPosition()) { }
Metadata::~Metadata() { }
diff --git a/media/libmedia/ToneGenerator.cpp b/media/libmedia/ToneGenerator.cpp
index 9c3170c..717d316 100644
--- a/media/libmedia/ToneGenerator.cpp
+++ b/media/libmedia/ToneGenerator.cpp
@@ -268,8 +268,8 @@ const ToneGenerator::ToneDescriptor ToneGenerator::sToneDescriptors[] = {
repeatCnt: 0,
repeatSegment: 0 }, // TONE_CDMA_CALL_SIGNAL_ISDN_SP_PRI
{ segments: { { duration: 0, waveFreq: { 0 }, 0, 0} },
- repeatCnt: 0,
- repeatSegment: 0 }, // TONE_CDMA_CALL_SIGNAL_ISDN_PAT3
+ repeatCnt: 0,
+ repeatSegment: 0 }, // TONE_CDMA_CALL_SIGNAL_ISDN_PAT3
{ segments: { { duration: 32, waveFreq: { 2091, 0 }, 0, 0 },
{ duration: 64, waveFreq: { 2556, 0 }, 4, 0 },
{ duration: 20, waveFreq: { 2091, 0 }, 0, 0 },
@@ -1015,7 +1015,7 @@ bool ToneGenerator::initAudioTrack() {
mpAudioTrack = NULL;
}
- // Open audio track in mono, PCM 16bit, default sampling rate, default buffer size
+ // Open audio track in mono, PCM 16bit, default sampling rate, default buffer size
mpAudioTrack = new AudioTrack();
ALOGV("Create Track: %p", mpAudioTrack);
@@ -1284,9 +1284,9 @@ audioCallback_EndLoop:
ALOGV("Cbk starting track");
lpToneGen->mState = TONE_PLAYING;
lSignal = true;
- break;
+ break;
case TONE_PLAYING:
- break;
+ break;
default:
// Force loop exit
lNumSmp = 0;
@@ -1578,4 +1578,3 @@ void ToneGenerator::WaveGenerator::getSamples(short *outBuffer,
}
} // end namespace android
-
diff --git a/media/libmedia/Visualizer.cpp b/media/libmedia/Visualizer.cpp
index 70f8c0c..bcd6ae4 100644
--- a/media/libmedia/Visualizer.cpp
+++ b/media/libmedia/Visualizer.cpp
@@ -66,7 +66,7 @@ status_t Visualizer::setEnabled(bool enabled)
}
}
t->mLock.lock();
- }
+ }
status_t status = AudioEffect::setEnabled(enabled);
@@ -320,4 +320,3 @@ void Visualizer::CaptureThread::onFirstRef()
}
}; // namespace android
-
diff --git a/media/libmedia/mediametadataretriever.cpp b/media/libmedia/mediametadataretriever.cpp
index 8d53357..b0241aa 100644
--- a/media/libmedia/mediametadataretriever.cpp
+++ b/media/libmedia/mediametadataretriever.cpp
@@ -45,7 +45,7 @@ const sp<IMediaPlayerService>& MediaMetadataRetriever::getService()
}
ALOGW("MediaPlayerService not published, waiting...");
usleep(500000); // 0.5 s
- } while(true);
+ } while (true);
if (sDeathNotifier == NULL) {
sDeathNotifier = new DeathNotifier();
}
diff --git a/media/libmedia/mediaplayer.cpp b/media/libmedia/mediaplayer.cpp
index 4ff1862..b52a37d 100644
--- a/media/libmedia/mediaplayer.cpp
+++ b/media/libmedia/mediaplayer.cpp
@@ -195,8 +195,8 @@ status_t MediaPlayer::invoke(const Parcel& request, Parcel *reply)
(mCurrentState != MEDIA_PLAYER_STATE_ERROR) &&
((mCurrentState & MEDIA_PLAYER_IDLE) != MEDIA_PLAYER_IDLE);
if ((mPlayer != NULL) && hasBeenInitialized) {
- ALOGV("invoke %d", request.dataSize());
- return mPlayer->invoke(request, reply);
+ ALOGV("invoke %d", request.dataSize());
+ return mPlayer->invoke(request, reply);
}
ALOGE("invoke failed: wrong state %X", mCurrentState);
return INVALID_OPERATION;
@@ -556,9 +556,9 @@ status_t MediaPlayer::setAudioSessionId(int sessionId)
return BAD_VALUE;
}
if (sessionId != mAudioSessionId) {
- AudioSystem::releaseAudioSessionId(mAudioSessionId);
- AudioSystem::acquireAudioSessionId(sessionId);
- mAudioSessionId = sessionId;
+ AudioSystem::releaseAudioSessionId(mAudioSessionId);
+ AudioSystem::acquireAudioSessionId(sessionId);
+ mAudioSessionId = sessionId;
}
return NO_ERROR;
}
@@ -610,7 +610,7 @@ status_t MediaPlayer::getParameter(int key, Parcel *reply)
ALOGV("MediaPlayer::getParameter(%d)", key);
Mutex::Autolock _l(mLock);
if (mPlayer != NULL) {
- return mPlayer->getParameter(key, reply);
+ return mPlayer->getParameter(key, reply);
}
ALOGV("getParameter: no active player");
return INVALID_OPERATION;
@@ -658,7 +658,7 @@ void MediaPlayer::notify(int msg, int ext1, int ext2, const Parcel *obj)
// and seekTo within the same process.
// FIXME: Remember, this is a hack, it's not even a hack that is applied
// consistently for all use-cases, this needs to be revisited.
- if (mLockThreadId != getThreadId()) {
+ if (mLockThreadId != getThreadId()) {
mLock.lock();
locked = true;
}
@@ -788,4 +788,11 @@ void MediaPlayer::died()
}
+status_t MediaPlayer::setNextMediaPlayer(const sp<MediaPlayer>& next) {
+ if (mPlayer == NULL) {
+ return NO_INIT;
+ }
+ return mPlayer->setNextPlayer(next == NULL ? NULL : next->mPlayer);
+}
+
}; // namespace android
diff --git a/media/libmedia/mediarecorder.cpp b/media/libmedia/mediarecorder.cpp
index cc73014..9541015 100644
--- a/media/libmedia/mediarecorder.cpp
+++ b/media/libmedia/mediarecorder.cpp
@@ -31,7 +31,7 @@ namespace android {
status_t MediaRecorder::setCamera(const sp<ICamera>& camera, const sp<ICameraRecordingProxy>& proxy)
{
ALOGV("setCamera(%p,%p)", camera.get(), proxy.get());
- if(mMediaRecorder == NULL) {
+ if (mMediaRecorder == NULL) {
ALOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
@@ -52,7 +52,7 @@ status_t MediaRecorder::setCamera(const sp<ICamera>& camera, const sp<ICameraRec
status_t MediaRecorder::setPreviewSurface(const sp<Surface>& surface)
{
ALOGV("setPreviewSurface(%p)", surface.get());
- if(mMediaRecorder == NULL) {
+ if (mMediaRecorder == NULL) {
ALOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
@@ -77,7 +77,7 @@ status_t MediaRecorder::setPreviewSurface(const sp<Surface>& surface)
status_t MediaRecorder::init()
{
ALOGV("init");
- if(mMediaRecorder == NULL) {
+ if (mMediaRecorder == NULL) {
ALOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
@@ -107,7 +107,7 @@ status_t MediaRecorder::init()
status_t MediaRecorder::setVideoSource(int vs)
{
ALOGV("setVideoSource(%d)", vs);
- if(mMediaRecorder == NULL) {
+ if (mMediaRecorder == NULL) {
ALOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
@@ -142,7 +142,7 @@ status_t MediaRecorder::setVideoSource(int vs)
status_t MediaRecorder::setAudioSource(int as)
{
ALOGV("setAudioSource(%d)", as);
- if(mMediaRecorder == NULL) {
+ if (mMediaRecorder == NULL) {
ALOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
@@ -175,7 +175,7 @@ status_t MediaRecorder::setAudioSource(int as)
status_t MediaRecorder::setOutputFormat(int of)
{
ALOGV("setOutputFormat(%d)", of);
- if(mMediaRecorder == NULL) {
+ if (mMediaRecorder == NULL) {
ALOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
@@ -201,7 +201,7 @@ status_t MediaRecorder::setOutputFormat(int of)
status_t MediaRecorder::setVideoEncoder(int ve)
{
ALOGV("setVideoEncoder(%d)", ve);
- if(mMediaRecorder == NULL) {
+ if (mMediaRecorder == NULL) {
ALOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
@@ -231,7 +231,7 @@ status_t MediaRecorder::setVideoEncoder(int ve)
status_t MediaRecorder::setAudioEncoder(int ae)
{
ALOGV("setAudioEncoder(%d)", ae);
- if(mMediaRecorder == NULL) {
+ if (mMediaRecorder == NULL) {
ALOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
@@ -261,7 +261,7 @@ status_t MediaRecorder::setAudioEncoder(int ae)
status_t MediaRecorder::setOutputFile(const char* path)
{
ALOGV("setOutputFile(%s)", path);
- if(mMediaRecorder == NULL) {
+ if (mMediaRecorder == NULL) {
ALOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
@@ -287,7 +287,7 @@ status_t MediaRecorder::setOutputFile(const char* path)
status_t MediaRecorder::setOutputFile(int fd, int64_t offset, int64_t length)
{
ALOGV("setOutputFile(%d, %lld, %lld)", fd, offset, length);
- if(mMediaRecorder == NULL) {
+ if (mMediaRecorder == NULL) {
ALOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
@@ -324,7 +324,7 @@ status_t MediaRecorder::setOutputFile(int fd, int64_t offset, int64_t length)
status_t MediaRecorder::setVideoSize(int width, int height)
{
ALOGV("setVideoSize(%d, %d)", width, height);
- if(mMediaRecorder == NULL) {
+ if (mMediaRecorder == NULL) {
ALOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
@@ -367,7 +367,7 @@ sp<ISurfaceTexture> MediaRecorder::
status_t MediaRecorder::setVideoFrameRate(int frames_per_second)
{
ALOGV("setVideoFrameRate(%d)", frames_per_second);
- if(mMediaRecorder == NULL) {
+ if (mMediaRecorder == NULL) {
ALOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
@@ -391,7 +391,7 @@ status_t MediaRecorder::setVideoFrameRate(int frames_per_second)
status_t MediaRecorder::setParameters(const String8& params) {
ALOGV("setParameters(%s)", params.string());
- if(mMediaRecorder == NULL) {
+ if (mMediaRecorder == NULL) {
ALOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
@@ -419,7 +419,7 @@ status_t MediaRecorder::setParameters(const String8& params) {
status_t MediaRecorder::prepare()
{
ALOGV("prepare");
- if(mMediaRecorder == NULL) {
+ if (mMediaRecorder == NULL) {
ALOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
@@ -458,7 +458,7 @@ status_t MediaRecorder::prepare()
status_t MediaRecorder::getMaxAmplitude(int* max)
{
ALOGV("getMaxAmplitude");
- if(mMediaRecorder == NULL) {
+ if (mMediaRecorder == NULL) {
ALOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
@@ -536,7 +536,7 @@ status_t MediaRecorder::reset()
doCleanUp();
status_t ret = UNKNOWN_ERROR;
- switch(mCurrentState) {
+ switch (mCurrentState) {
case MEDIA_RECORDER_IDLE:
ret = OK;
break;
@@ -547,7 +547,7 @@ status_t MediaRecorder::reset()
case MEDIA_RECORDER_ERROR: {
ret = doReset();
if (OK != ret) {
- return ret; // No need to continue
+ return ret; // No need to continue
}
} // Intentional fall through
case MEDIA_RECORDER_INITIALIZED:
diff --git a/media/libmediaplayerservice/Android.mk b/media/libmediaplayerservice/Android.mk
index e521648..41bcab0 100644
--- a/media/libmediaplayerservice/Android.mk
+++ b/media/libmediaplayerservice/Android.mk
@@ -36,13 +36,13 @@ LOCAL_STATIC_LIBRARIES := \
libstagefright_nuplayer \
libstagefright_rtsp \
-LOCAL_C_INCLUDES := \
+LOCAL_C_INCLUDES := \
$(JNI_H_INCLUDE) \
$(call include-path-for, graphics corecg) \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
$(TOP)/frameworks/base/media/libstagefright/include \
$(TOP)/frameworks/base/media/libstagefright/rtsp \
- $(TOP)/external/tremolo/Tremolo \
+ $(TOP)/frameworks/native/include/media/openmax \
+ $(TOP)/external/tremolo/Tremolo
LOCAL_MODULE:= libmediaplayerservice
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index bbc53f3..1cc120c 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -1068,6 +1068,20 @@ status_t MediaPlayerService::Client::getDuration(int *msec)
return ret;
}
+status_t MediaPlayerService::Client::setNextPlayer(const sp<IMediaPlayer>& player) {
+ ALOGV("setNextPlayer");
+ Mutex::Autolock l(mLock);
+ sp<Client> c = static_cast<Client*>(player.get());
+ mNextClient = c;
+ if (mAudioOutput != NULL && c != NULL) {
+ mAudioOutput->setNextOutput(c->mAudioOutput);
+ } else {
+ ALOGE("no current audio output");
+ }
+ return OK;
+}
+
+
status_t MediaPlayerService::Client::seekTo(int msec)
{
ALOGV("[%d] seekTo(%d)", mConnId, msec);
@@ -1189,6 +1203,15 @@ void MediaPlayerService::Client::notify(
{
Client* client = static_cast<Client*>(cookie);
+ {
+ Mutex::Autolock l(client->mLock);
+ if (msg == MEDIA_PLAYBACK_COMPLETE && client->mNextClient != NULL) {
+ client->mAudioOutput->switchToNextOutput();
+ client->mNextClient->start();
+ client->mNextClient->mClient->notify(MEDIA_INFO, MEDIA_INFO_STARTED_AS_NEXT, 0, obj);
+ }
+ }
+
if (MEDIA_INFO == msg &&
MEDIA_INFO_METADATA_UPDATE == ext1) {
const media::Metadata::Type metadata_type = ext2;
@@ -1376,9 +1399,11 @@ Exit:
MediaPlayerService::AudioOutput::AudioOutput(int sessionId)
: mCallback(NULL),
mCallbackCookie(NULL),
+ mCallbackData(NULL),
mSessionId(sessionId) {
ALOGV("AudioOutput(%d)", sessionId);
mTrack = 0;
+ mRecycledTrack = 0;
mStreamType = AUDIO_STREAM_MUSIC;
mLeftVolume = 1.0;
mRightVolume = 1.0;
@@ -1393,6 +1418,8 @@ MediaPlayerService::AudioOutput::AudioOutput(int sessionId)
MediaPlayerService::AudioOutput::~AudioOutput()
{
close();
+ delete mRecycledTrack;
+ delete mCallbackData;
}
void MediaPlayerService::AudioOutput::setMinBufferCount()
@@ -1473,7 +1500,6 @@ status_t MediaPlayerService::AudioOutput::open(
}
ALOGV("open(%u, %d, 0x%x, %d, %d, %d)", sampleRate, channelCount, channelMask,
format, bufferCount, mSessionId);
- if (mTrack) close();
int afSampleRate;
int afFrameCount;
int frameCount;
@@ -1494,9 +1520,48 @@ status_t MediaPlayerService::AudioOutput::open(
return NO_INIT;
}
}
+ if (mRecycledTrack) {
+ // check if the existing track can be reused as-is, or if a new track needs to be created.
+
+ bool reuse = true;
+ if ((mCallbackData == NULL && mCallback != NULL) ||
+ (mCallbackData != NULL && mCallback == NULL)) {
+ // recycled track uses callbacks but the caller wants to use writes, or vice versa
+ ALOGV("can't chain callback and write");
+ reuse = false;
+ } else if ((mRecycledTrack->getSampleRate() != sampleRate) ||
+ (mRecycledTrack->channelCount() != channelCount) ||
+ (mRecycledTrack->frameCount() != frameCount)) {
+ ALOGV("samplerate, channelcount or framecount differ");
+ reuse = false;
+ }
+ if (reuse) {
+ ALOGV("chaining to next output");
+ close();
+ mTrack = mRecycledTrack;
+ mRecycledTrack = NULL;
+ if (mCallbackData != NULL) {
+ mCallbackData->setOutput(this);
+ }
+ return OK;
+ }
+
+ // if we're not going to reuse the track, unblock and flush it
+ if (mCallbackData != NULL) {
+ mCallbackData->setOutput(NULL);
+ mCallbackData->endTrackSwitch();
+ }
+ mRecycledTrack->flush();
+ delete mRecycledTrack;
+ mRecycledTrack = NULL;
+ delete mCallbackData;
+ mCallbackData = NULL;
+ close();
+ }
AudioTrack *t;
if (mCallback != NULL) {
+ mCallbackData = new CallbackData(this);
t = new AudioTrack(
mStreamType,
sampleRate,
@@ -1505,7 +1570,7 @@ status_t MediaPlayerService::AudioOutput::open(
frameCount,
AUDIO_POLICY_OUTPUT_FLAG_NONE,
CallbackWrapper,
- this,
+ mCallbackData,
0,
mSessionId);
} else {
@@ -1546,6 +1611,9 @@ status_t MediaPlayerService::AudioOutput::open(
void MediaPlayerService::AudioOutput::start()
{
ALOGV("start");
+ if (mCallbackData != NULL) {
+ mCallbackData->endTrackSwitch();
+ }
if (mTrack) {
mTrack->setVolume(mLeftVolume, mRightVolume);
mTrack->setAuxEffectSendLevel(mSendLevel);
@@ -1553,7 +1621,26 @@ void MediaPlayerService::AudioOutput::start()
}
}
+void MediaPlayerService::AudioOutput::setNextOutput(const sp<AudioOutput>& nextOutput) {
+ mNextOutput = nextOutput;
+}
+
+void MediaPlayerService::AudioOutput::switchToNextOutput() {
+ ALOGV("switchToNextOutput");
+ if (mNextOutput != NULL) {
+ if (mCallbackData != NULL) {
+ mCallbackData->beginTrackSwitch();
+ }
+ delete mNextOutput->mCallbackData;
+ mNextOutput->mCallbackData = mCallbackData;
+ mCallbackData = NULL;
+ mNextOutput->mRecycledTrack = mTrack;
+ mTrack = NULL;
+ mNextOutput->mSampleRateHz = mSampleRateHz;
+ mNextOutput->mMsecsPerFrame = mMsecsPerFrame;
+ }
+}
ssize_t MediaPlayerService::AudioOutput::write(const void* buffer, size_t size)
{
@@ -1646,13 +1733,22 @@ void MediaPlayerService::AudioOutput::CallbackWrapper(
return;
}
- AudioOutput *me = (AudioOutput *)cookie;
+ CallbackData *data = (CallbackData*)cookie;
+ data->lock();
+ AudioOutput *me = data->getOutput();
AudioTrack::Buffer *buffer = (AudioTrack::Buffer *)info;
+ if (me == NULL) {
+ // no output set, likely because the track was scheduled to be reused
+ // by another player, but the format turned out to be incompatible.
+ data->unlock();
+ buffer->size = 0;
+ return;
+ }
size_t actualSize = (*me->mCallback)(
me, buffer->raw, buffer->size, me->mCallbackCookie);
- if (actualSize == 0 && buffer->size > 0) {
+ if (actualSize == 0 && buffer->size > 0 && me->mNextOutput == NULL) {
// We've reached EOS but the audio track is not stopped yet,
// keep playing silence.
@@ -1661,6 +1757,7 @@ void MediaPlayerService::AudioOutput::CallbackWrapper(
}
buffer->size = actualSize;
+ data->unlock();
}
int MediaPlayerService::AudioOutput::getSessionId()
diff --git a/media/libmediaplayerservice/MediaPlayerService.h b/media/libmediaplayerservice/MediaPlayerService.h
index 85cec22..d4e0eb1 100644
--- a/media/libmediaplayerservice/MediaPlayerService.h
+++ b/media/libmediaplayerservice/MediaPlayerService.h
@@ -31,6 +31,7 @@
#include <media/IMediaPlayerService.h>
#include <media/MediaPlayerInterface.h>
#include <media/Metadata.h>
+#include <media/stagefright/foundation/ABase.h>
#include <system/audio.h>
@@ -69,7 +70,9 @@ class MediaPlayerService : public BnMediaPlayerService
class AudioOutput : public MediaPlayerBase::AudioSink
{
- public:
+ class CallbackData;
+
+ public:
AudioOutput(int sessionId);
virtual ~AudioOutput();
@@ -104,14 +107,21 @@ class MediaPlayerService : public BnMediaPlayerService
static bool isOnEmulator();
static int getMinBufferCount();
+ void setNextOutput(const sp<AudioOutput>& nextOutput);
+ void switchToNextOutput();
+ virtual bool needsTrailingPadding() { return mNextOutput == NULL; }
+
private:
static void setMinBufferCount();
static void CallbackWrapper(
int event, void *me, void *info);
AudioTrack* mTrack;
+ AudioTrack* mRecycledTrack;
+ sp<AudioOutput> mNextOutput;
AudioCallback mCallback;
void * mCallbackCookie;
+ CallbackData * mCallbackData;
audio_stream_type_t mStreamType;
float mLeftVolume;
float mRightVolume;
@@ -124,7 +134,38 @@ class MediaPlayerService : public BnMediaPlayerService
static bool mIsOnEmulator;
static int mMinBufferCount; // 12 for emulator; otherwise 4
- };
+ // CallbackData is what is passed to the AudioTrack as the "user" data.
+ // We need to be able to target this to a different Output on the fly,
+ // so we can't use the Output itself for this.
+ class CallbackData {
+ public:
+ CallbackData(AudioOutput *cookie) {
+ mData = cookie;
+ mSwitching = false;
+ }
+ AudioOutput * getOutput() { return mData;}
+ void setOutput(AudioOutput* newcookie) { mData = newcookie; }
+ // lock/unlock are used by the callback before accessing the payload of this object
+ void lock() { mLock.lock(); }
+ void unlock() { mLock.unlock(); }
+ // beginTrackSwitch/endTrackSwitch are used when this object is being handed over
+ // to the next sink.
+ void beginTrackSwitch() { mLock.lock(); mSwitching = true; }
+ void endTrackSwitch() {
+ if (mSwitching) {
+ mLock.unlock();
+ }
+ mSwitching = false;
+ }
+ private:
+ AudioOutput * mData;
+ mutable Mutex mLock;
+ bool mSwitching;
+ DISALLOW_EVIL_CONSTRUCTORS(CallbackData);
+ };
+
+ }; // AudioOutput
+
class AudioCache : public MediaPlayerBase::AudioSink
{
@@ -184,7 +225,7 @@ class MediaPlayerService : public BnMediaPlayerService
bool mCommandComplete;
sp<Thread> mCallbackThread;
- };
+ }; // AudioCache
public:
static void instantiate();
@@ -278,6 +319,7 @@ private:
virtual status_t setParameter(int key, const Parcel &request);
virtual status_t getParameter(int key, Parcel *reply);
virtual status_t setRetransmitEndpoint(const struct sockaddr_in* endpoint);
+ virtual status_t setNextPlayer(const sp<IMediaPlayer>& player);
sp<MediaPlayerBase> createPlayer(player_type playerType);
@@ -350,6 +392,7 @@ private:
sp<IBinder> mConnectedWindowBinder;
struct sockaddr_in mRetransmitEndpoint;
bool mRetransmitEndpointValid;
+ sp<Client> mNextClient;
// Metadata filters.
media::Metadata::Filter mMetadataAllow; // protected by mLock
@@ -364,7 +407,7 @@ private:
#if CALLBACK_ANTAGONIZER
Antagonizer* mAntagonizer;
#endif
- };
+ }; // Client
// ----------------------------------------------------------------------------
diff --git a/media/libmediaplayerservice/nuplayer/Android.mk b/media/libmediaplayerservice/nuplayer/Android.mk
index 33e2f93..9b485d7 100644
--- a/media/libmediaplayerservice/nuplayer/Android.mk
+++ b/media/libmediaplayerservice/nuplayer/Android.mk
@@ -12,11 +12,11 @@ LOCAL_SRC_FILES:= \
StreamingSource.cpp \
LOCAL_C_INCLUDES := \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
+ $(TOP)/frameworks/base/media/libstagefright/httplive \
$(TOP)/frameworks/base/media/libstagefright/include \
- $(TOP)/frameworks/base/media/libstagefright/mpeg2ts \
- $(TOP)/frameworks/base/media/libstagefright/httplive \
- $(TOP)/frameworks/base/media/libstagefright/rtsp \
+ $(TOP)/frameworks/base/media/libstagefright/mpeg2ts \
+ $(TOP)/frameworks/base/media/libstagefright/rtsp \
+ $(TOP)/frameworks/native/include/media/openmax
LOCAL_MODULE:= libstagefright_nuplayer
diff --git a/media/libstagefright/Android.mk b/media/libstagefright/Android.mk
index 5aea8d0..047b4cb 100644
--- a/media/libstagefright/Android.mk
+++ b/media/libstagefright/Android.mk
@@ -57,8 +57,9 @@ LOCAL_SRC_FILES:= \
LOCAL_C_INCLUDES:= \
$(JNI_H_INCLUDE) \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
$(TOP)/frameworks/base/include/media/stagefright/timedtext \
+ $(TOP)/frameworks/native/include/media/hardware \
+ $(TOP)/frameworks/native/include/media/openmax \
$(TOP)/external/expat/lib \
$(TOP)/external/flac/include \
$(TOP)/external/tremolo \
diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp
index 23c3c74..9db3c97 100644
--- a/media/libstagefright/AudioPlayer.cpp
+++ b/media/libstagefright/AudioPlayer.cpp
@@ -419,7 +419,11 @@ size_t AudioPlayer::fillBuffer(void *data, size_t size) {
timeToCompletionUs, timeToCompletionUs / 1E6);
postEOS = true;
- postEOSDelayUs = timeToCompletionUs + mLatencyUs;
+ if (mAudioSink->needsTrailingPadding()) {
+ postEOSDelayUs = timeToCompletionUs + mLatencyUs;
+ } else {
+ postEOSDelayUs = 0;
+ }
}
mReachedEOS = true;
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index 966416e..278e3a2 100755
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -27,9 +27,9 @@
#include <binder/IServiceManager.h>
#include <binder/MemoryDealer.h>
#include <binder/ProcessState.h>
+#include <HardwareAPI.h>
#include <media/stagefright/foundation/ADebug.h>
#include <media/IMediaPlayerService.h>
-#include <media/stagefright/HardwareAPI.h>
#include <media/stagefright/MediaBuffer.h>
#include <media/stagefright/MediaBufferGroup.h>
#include <media/stagefright/MediaDefs.h>
diff --git a/media/libstagefright/SurfaceMediaSource.cpp b/media/libstagefright/SurfaceMediaSource.cpp
index ab2cff0..7481e2e 100644
--- a/media/libstagefright/SurfaceMediaSource.cpp
+++ b/media/libstagefright/SurfaceMediaSource.cpp
@@ -20,8 +20,8 @@
#include <media/stagefright/SurfaceMediaSource.h>
#include <media/stagefright/MetaData.h>
#include <media/stagefright/MediaDefs.h>
-#include <media/stagefright/openmax/OMX_IVCommon.h>
-#include <media/stagefright/MetadataBufferType.h>
+#include <OMX_IVCommon.h>
+#include <MetadataBufferType.h>
#include <ui/GraphicBuffer.h>
#include <gui/ISurfaceComposer.h>
@@ -54,6 +54,9 @@ SurfaceMediaSource::SurfaceMediaSource(uint32_t bufW, uint32_t bufH) :
ALOGV("SurfaceMediaSource::SurfaceMediaSource");
sp<ISurfaceComposer> composer(ComposerService::getComposerService());
mGraphicBufferAlloc = composer->createGraphicBufferAlloc();
+ if (mGraphicBufferAlloc == 0) {
+ ALOGE("createGraphicBufferAlloc() failed in SurfaceMediaSource()");
+ }
}
SurfaceMediaSource::~SurfaceMediaSource() {
diff --git a/media/libstagefright/chromium_http/Android.mk b/media/libstagefright/chromium_http/Android.mk
index 63775f1..e37b4a8 100644
--- a/media/libstagefright/chromium_http/Android.mk
+++ b/media/libstagefright/chromium_http/Android.mk
@@ -10,7 +10,7 @@ LOCAL_SRC_FILES:= \
LOCAL_C_INCLUDES:= \
$(JNI_H_INCLUDE) \
frameworks/base/media/libstagefright \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
+ $(TOP)/frameworks/native/include/media/openmax \
external/chromium \
external/chromium/android
diff --git a/media/libstagefright/codecs/aacdec/Android.mk b/media/libstagefright/codecs/aacdec/Android.mk
index 20c7bc0..fd6de79 100644
--- a/media/libstagefright/codecs/aacdec/Android.mk
+++ b/media/libstagefright/codecs/aacdec/Android.mk
@@ -164,7 +164,7 @@ LOCAL_SRC_FILES := \
LOCAL_C_INCLUDES := \
frameworks/base/media/libstagefright/include \
- frameworks/base/include/media/stagefright/openmax \
+ frameworks/native/include/media/openmax
LOCAL_CFLAGS := -DOSCL_IMPORT_REF=
diff --git a/media/libstagefright/codecs/aacenc/Android.mk b/media/libstagefright/codecs/aacenc/Android.mk
index 509193c..b47cb1e 100644
--- a/media/libstagefright/codecs/aacenc/Android.mk
+++ b/media/libstagefright/codecs/aacenc/Android.mk
@@ -94,9 +94,9 @@ LOCAL_SRC_FILES := \
SoftAACEncoder.cpp
LOCAL_C_INCLUDES := \
- frameworks/base/media/libstagefright/include \
- frameworks/base/include/media/stagefright/openmax \
+ frameworks/base/media/libstagefright/include \
frameworks/base/media/libstagefright/codecs/common/include \
+ frameworks/native/include/media/openmax
LOCAL_CFLAGS := -DOSCL_IMPORT_REF=
diff --git a/media/libstagefright/codecs/amrnb/dec/Android.mk b/media/libstagefright/codecs/amrnb/dec/Android.mk
index 23a22ef..b81306d 100644
--- a/media/libstagefright/codecs/amrnb/dec/Android.mk
+++ b/media/libstagefright/codecs/amrnb/dec/Android.mk
@@ -61,12 +61,12 @@ LOCAL_SRC_FILES := \
LOCAL_C_INCLUDES := \
frameworks/base/media/libstagefright/include \
- frameworks/base/include/media/stagefright/openmax \
+ frameworks/base/media/libstagefright/codecs/amrwb/src \
+ frameworks/native/include/media/openmax \
$(LOCAL_PATH)/src \
$(LOCAL_PATH)/include \
$(LOCAL_PATH)/../common/include \
- $(LOCAL_PATH)/../common \
- frameworks/base/media/libstagefright/codecs/amrwb/src \
+ $(LOCAL_PATH)/../common
LOCAL_CFLAGS := -DOSCL_IMPORT_REF=
diff --git a/media/libstagefright/codecs/amrnb/enc/Android.mk b/media/libstagefright/codecs/amrnb/enc/Android.mk
index 94e8726..21937bf 100644
--- a/media/libstagefright/codecs/amrnb/enc/Android.mk
+++ b/media/libstagefright/codecs/amrnb/enc/Android.mk
@@ -84,7 +84,7 @@ LOCAL_SRC_FILES := \
LOCAL_C_INCLUDES := \
frameworks/base/media/libstagefright/include \
- frameworks/base/include/media/stagefright/openmax \
+ frameworks/native/include/media/openmax \
$(LOCAL_PATH)/src \
$(LOCAL_PATH)/include \
$(LOCAL_PATH)/../common/include \
diff --git a/media/libstagefright/codecs/amrwbenc/Android.mk b/media/libstagefright/codecs/amrwbenc/Android.mk
index 6ce6171..3a46ec8 100644
--- a/media/libstagefright/codecs/amrwbenc/Android.mk
+++ b/media/libstagefright/codecs/amrwbenc/Android.mk
@@ -125,9 +125,9 @@ LOCAL_SRC_FILES := \
SoftAMRWBEncoder.cpp
LOCAL_C_INCLUDES := \
- frameworks/base/media/libstagefright/include \
- frameworks/base/include/media/stagefright/openmax \
+ frameworks/base/media/libstagefright/include \
frameworks/base/media/libstagefright/codecs/common/include \
+ frameworks/native/include/media/openmax
LOCAL_STATIC_LIBRARIES := \
libstagefright_amrwbenc
diff --git a/media/libstagefright/codecs/avc/enc/Android.mk b/media/libstagefright/codecs/avc/enc/Android.mk
index eb2e320..54cc9b1 100644
--- a/media/libstagefright/codecs/avc/enc/Android.mk
+++ b/media/libstagefright/codecs/avc/enc/Android.mk
@@ -25,8 +25,8 @@ LOCAL_MODULE := libstagefright_avcenc
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/src \
$(LOCAL_PATH)/../common/include \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
- $(TOP)/frameworks/base/media/libstagefright/include
+ $(TOP)/frameworks/base/media/libstagefright/include \
+ $(TOP)/frameworks/native/include/media/openmax
LOCAL_CFLAGS := \
-D__arm__ \
diff --git a/media/libstagefright/codecs/g711/dec/Android.mk b/media/libstagefright/codecs/g711/dec/Android.mk
index 6692533..42706a5 100644
--- a/media/libstagefright/codecs/g711/dec/Android.mk
+++ b/media/libstagefright/codecs/g711/dec/Android.mk
@@ -6,7 +6,7 @@ LOCAL_SRC_FILES := \
LOCAL_C_INCLUDES := \
frameworks/base/media/libstagefright/include \
- frameworks/base/include/media/stagefright/openmax \
+ frameworks/native/include/media/openmax
LOCAL_SHARED_LIBRARIES := \
libstagefright libstagefright_omx libstagefright_foundation libutils
diff --git a/media/libstagefright/codecs/m4v_h263/dec/Android.mk b/media/libstagefright/codecs/m4v_h263/dec/Android.mk
index 2ffa5f2..8c245d1 100644
--- a/media/libstagefright/codecs/m4v_h263/dec/Android.mk
+++ b/media/libstagefright/codecs/m4v_h263/dec/Android.mk
@@ -42,7 +42,7 @@ LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/src \
$(LOCAL_PATH)/include \
$(TOP)/frameworks/base/media/libstagefright/include \
- $(TOP)/frameworks/base/include/media/stagefright/openmax
+ $(TOP)/frameworks/native/include/media/openmax
LOCAL_CFLAGS := -DOSCL_EXPORT_REF= -DOSCL_IMPORT_REF=
@@ -59,7 +59,7 @@ LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/src \
$(LOCAL_PATH)/include \
frameworks/base/media/libstagefright/include \
- frameworks/base/include/media/stagefright/openmax \
+ frameworks/native/include/media/openmax
LOCAL_CFLAGS := -DOSCL_EXPORT_REF= -DOSCL_IMPORT_REF=
diff --git a/media/libstagefright/codecs/m4v_h263/enc/Android.mk b/media/libstagefright/codecs/m4v_h263/enc/Android.mk
index 43318e9..2b7c938 100644
--- a/media/libstagefright/codecs/m4v_h263/enc/Android.mk
+++ b/media/libstagefright/codecs/m4v_h263/enc/Android.mk
@@ -31,7 +31,7 @@ LOCAL_CFLAGS := \
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/src \
$(LOCAL_PATH)/include \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
- $(TOP)/frameworks/base/media/libstagefright/include
+ $(TOP)/frameworks/base/media/libstagefright/include \
+ $(TOP)/frameworks/native/include/media/openmax
include $(BUILD_STATIC_LIBRARY)
diff --git a/media/libstagefright/codecs/mp3dec/Android.mk b/media/libstagefright/codecs/mp3dec/Android.mk
index a08c9f0..ed51aa5 100644
--- a/media/libstagefright/codecs/mp3dec/Android.mk
+++ b/media/libstagefright/codecs/mp3dec/Android.mk
@@ -65,7 +65,7 @@ LOCAL_SRC_FILES := \
LOCAL_C_INCLUDES := \
frameworks/base/media/libstagefright/include \
- frameworks/base/include/media/stagefright/openmax \
+ frameworks/native/include/media/openmax \
$(LOCAL_PATH)/src \
$(LOCAL_PATH)/include
diff --git a/media/libstagefright/codecs/on2/dec/Android.mk b/media/libstagefright/codecs/on2/dec/Android.mk
index 32bbd6b..2997228 100644
--- a/media/libstagefright/codecs/on2/dec/Android.mk
+++ b/media/libstagefright/codecs/on2/dec/Android.mk
@@ -9,7 +9,7 @@ LOCAL_C_INCLUDES := \
$(TOP)/external/libvpx/vpx_codec \
$(TOP)/external/libvpx/vpx_ports \
frameworks/base/media/libstagefright/include \
- frameworks/base/include/media/stagefright/openmax \
+ frameworks/native/include/media/openmax \
LOCAL_STATIC_LIBRARIES := \
libvpx
diff --git a/media/libstagefright/codecs/on2/h264dec/Android.mk b/media/libstagefright/codecs/on2/h264dec/Android.mk
index 5b3c876..43c20f0 100644
--- a/media/libstagefright/codecs/on2/h264dec/Android.mk
+++ b/media/libstagefright/codecs/on2/h264dec/Android.mk
@@ -35,7 +35,7 @@ LOCAL_SRC_FILES := \
LOCAL_C_INCLUDES := $(LOCAL_PATH)/./inc \
frameworks/base/media/libstagefright/include \
- frameworks/base/include/media/stagefright/openmax \
+ frameworks/native/include/media/openmax \
MY_ASM := \
./source/arm_neon_asm_gcc/h264bsdWriteMacroblock.S \
diff --git a/media/libstagefright/codecs/vorbis/dec/Android.mk b/media/libstagefright/codecs/vorbis/dec/Android.mk
index f33f3ac..fca70b7 100644
--- a/media/libstagefright/codecs/vorbis/dec/Android.mk
+++ b/media/libstagefright/codecs/vorbis/dec/Android.mk
@@ -7,7 +7,7 @@ LOCAL_SRC_FILES := \
LOCAL_C_INCLUDES := \
external/tremolo \
frameworks/base/media/libstagefright/include \
- frameworks/base/include/media/stagefright/openmax \
+ frameworks/native/include/media/openmax \
LOCAL_SHARED_LIBRARIES := \
libvorbisidec libstagefright libstagefright_omx \
diff --git a/media/libstagefright/colorconversion/Android.mk b/media/libstagefright/colorconversion/Android.mk
index 62ba40f..59a64ba 100644
--- a/media/libstagefright/colorconversion/Android.mk
+++ b/media/libstagefright/colorconversion/Android.mk
@@ -6,7 +6,7 @@ LOCAL_SRC_FILES:= \
SoftwareRenderer.cpp
LOCAL_C_INCLUDES := \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
+ $(TOP)/frameworks/native/include/media/openmax \
$(TOP)/hardware/msm7k
LOCAL_MODULE:= libstagefright_color_conversion
diff --git a/media/libstagefright/httplive/Android.mk b/media/libstagefright/httplive/Android.mk
index 9225e41..a5990c3 100644
--- a/media/libstagefright/httplive/Android.mk
+++ b/media/libstagefright/httplive/Android.mk
@@ -9,9 +9,9 @@ LOCAL_SRC_FILES:= \
LOCAL_C_INCLUDES:= \
$(JNI_H_INCLUDE) \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
- $(TOP)/frameworks/base/media/libstagefright \
- $(TOP)/external/openssl/include
+ $(TOP)/frameworks/base/media/libstagefright \
+ $(TOP)/frameworks/native/include/media/openmax \
+ $(TOP)/external/openssl/include
LOCAL_MODULE:= libstagefright_httplive
diff --git a/media/libstagefright/matroska/Android.mk b/media/libstagefright/matroska/Android.mk
index 1f1c68b..e67da4c 100644
--- a/media/libstagefright/matroska/Android.mk
+++ b/media/libstagefright/matroska/Android.mk
@@ -7,7 +7,7 @@ LOCAL_SRC_FILES:= \
LOCAL_C_INCLUDES:= \
$(JNI_H_INCLUDE) \
$(TOP)/external/libvpx/mkvparser \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
+ $(TOP)/frameworks/native/include/media/openmax \
LOCAL_CFLAGS += -Wno-multichar
diff --git a/media/libstagefright/mpeg2ts/Android.mk b/media/libstagefright/mpeg2ts/Android.mk
index 578c669..ac4c2a1 100644
--- a/media/libstagefright/mpeg2ts/Android.mk
+++ b/media/libstagefright/mpeg2ts/Android.mk
@@ -11,8 +11,8 @@ LOCAL_SRC_FILES:= \
LOCAL_C_INCLUDES:= \
$(JNI_H_INCLUDE) \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
- $(TOP)/frameworks/base/media/libstagefright
+ $(TOP)/frameworks/base/media/libstagefright \
+ $(TOP)/frameworks/native/include/media/openmax
LOCAL_MODULE:= libstagefright_mpeg2ts
diff --git a/media/libstagefright/omx/Android.mk b/media/libstagefright/omx/Android.mk
index d844f3d..f587a9c 100644
--- a/media/libstagefright/omx/Android.mk
+++ b/media/libstagefright/omx/Android.mk
@@ -14,7 +14,8 @@ LOCAL_SRC_FILES:= \
LOCAL_C_INCLUDES += \
frameworks/base/media/libstagefright \
- $(TOP)/frameworks/base/include/media/stagefright/openmax
+ $(TOP)/frameworks/native/include/media/hardware \
+ $(TOP)/frameworks/native/include/media/openmax
LOCAL_SHARED_LIBRARIES := \
libbinder \
diff --git a/media/libstagefright/omx/OMXMaster.h b/media/libstagefright/omx/OMXMaster.h
index feee1f9..6069741 100644
--- a/media/libstagefright/omx/OMXMaster.h
+++ b/media/libstagefright/omx/OMXMaster.h
@@ -18,7 +18,7 @@
#define OMX_MASTER_H_
-#include <media/stagefright/OMXPluginBase.h>
+#include <OMXPluginBase.h>
#include <utils/threads.h>
#include <utils/KeyedVector.h>
diff --git a/media/libstagefright/omx/OMXNodeInstance.cpp b/media/libstagefright/omx/OMXNodeInstance.cpp
index 099c4f5..bff3def 100644
--- a/media/libstagefright/omx/OMXNodeInstance.cpp
+++ b/media/libstagefright/omx/OMXNodeInstance.cpp
@@ -24,8 +24,8 @@
#include <OMX_Component.h>
#include <binder/IMemory.h>
+#include <HardwareAPI.h>
#include <media/stagefright/foundation/ADebug.h>
-#include <media/stagefright/HardwareAPI.h>
#include <media/stagefright/MediaErrors.h>
namespace android {
diff --git a/media/libstagefright/omx/SoftOMXPlugin.h b/media/libstagefright/omx/SoftOMXPlugin.h
index f93c323..c89cd87 100644
--- a/media/libstagefright/omx/SoftOMXPlugin.h
+++ b/media/libstagefright/omx/SoftOMXPlugin.h
@@ -19,7 +19,7 @@
#define SOFT_OMX_PLUGIN_H_
#include <media/stagefright/foundation/ABase.h>
-#include <media/stagefright/OMXPluginBase.h>
+#include <OMXPluginBase.h>
namespace android {
diff --git a/media/libstagefright/omx/tests/Android.mk b/media/libstagefright/omx/tests/Android.mk
index 0c0a70c..07d47a8 100644
--- a/media/libstagefright/omx/tests/Android.mk
+++ b/media/libstagefright/omx/tests/Android.mk
@@ -10,7 +10,7 @@ LOCAL_SHARED_LIBRARIES := \
LOCAL_C_INCLUDES := \
$(JNI_H_INCLUDE) \
frameworks/base/media/libstagefright \
- $(TOP)/frameworks/base/include/media/stagefright/openmax
+ $(TOP)/frameworks/native/include/media/openmax
LOCAL_MODULE := omx_tests
diff --git a/media/libstagefright/rtsp/Android.mk b/media/libstagefright/rtsp/Android.mk
index 8230347..b3bc37c 100644
--- a/media/libstagefright/rtsp/Android.mk
+++ b/media/libstagefright/rtsp/Android.mk
@@ -19,9 +19,9 @@ LOCAL_SRC_FILES:= \
LOCAL_C_INCLUDES:= \
$(JNI_H_INCLUDE) \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
- $(TOP)/frameworks/base/media/libstagefright/include \
- $(TOP)/external/openssl/include
+ $(TOP)/frameworks/base/media/libstagefright/include \
+ $(TOP)/frameworks/native/include/media/openmax \
+ $(TOP)/external/openssl/include
LOCAL_MODULE:= libstagefright_rtsp
@@ -47,7 +47,7 @@ LOCAL_STATIC_LIBRARIES := \
LOCAL_C_INCLUDES:= \
$(JNI_H_INCLUDE) \
frameworks/base/media/libstagefright \
- $(TOP)/frameworks/base/include/media/stagefright/openmax
+ $(TOP)/frameworks/native/include/media/openmax
LOCAL_CFLAGS += -Wno-multichar
diff --git a/media/libstagefright/tests/Android.mk b/media/libstagefright/tests/Android.mk
index 357feb1..656a630 100644
--- a/media/libstagefright/tests/Android.mk
+++ b/media/libstagefright/tests/Android.mk
@@ -38,7 +38,7 @@ LOCAL_C_INCLUDES := \
external/stlport/stlport \
frameworks/base/media/libstagefright \
frameworks/base/media/libstagefright/include \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
+ $(TOP)/frameworks/native/include/media/openmax \
include $(BUILD_EXECUTABLE)
diff --git a/media/libstagefright/tests/SurfaceMediaSource_test.cpp b/media/libstagefright/tests/SurfaceMediaSource_test.cpp
index 3dcd9fc..fe77cf7 100644
--- a/media/libstagefright/tests/SurfaceMediaSource_test.cpp
+++ b/media/libstagefright/tests/SurfaceMediaSource_test.cpp
@@ -107,7 +107,7 @@ protected:
window.get(), NULL);
} else {
ALOGV("No actual display. Choosing EGLSurface based on SurfaceMediaSource");
- sp<SurfaceMediaSource> sms = new SurfaceMediaSource(
+ sp<ISurfaceTexture> sms = new SurfaceMediaSource(
getSurfaceWidth(), getSurfaceHeight());
sp<SurfaceTextureClient> stc = new SurfaceTextureClient(sms);
sp<ANativeWindow> window = stc;
@@ -360,7 +360,8 @@ protected:
android::ProcessState::self()->startThreadPool();
mSMS = new SurfaceMediaSource(mYuvTexWidth, mYuvTexHeight);
mSMS->setSynchronousMode(true);
- mSTC = new SurfaceTextureClient(mSMS);
+ // Manual cast is required to avoid constructor ambiguity
+ mSTC = new SurfaceTextureClient(static_cast<sp<ISurfaceTexture> >( mSMS));
mANW = mSTC;
}
@@ -395,7 +396,7 @@ protected:
ALOGV("SMS-GLTest::SetUp()");
android::ProcessState::self()->startThreadPool();
mSMS = new SurfaceMediaSource(mYuvTexWidth, mYuvTexHeight);
- mSTC = new SurfaceTextureClient(mSMS);
+ mSTC = new SurfaceTextureClient(static_cast<sp<ISurfaceTexture> >( mSMS));
mANW = mSTC;
// Doing the setup related to the GL Side
@@ -773,7 +774,7 @@ TEST_F(SurfaceMediaSourceGLTest, ChooseAndroidRecordableEGLConfigDummyWriter) {
ALOGV("Verify creating a surface w/ right config + dummy writer*********");
mSMS = new SurfaceMediaSource(mYuvTexWidth, mYuvTexHeight);
- mSTC = new SurfaceTextureClient(mSMS);
+ mSTC = new SurfaceTextureClient(static_cast<sp<ISurfaceTexture> >( mSMS));
mANW = mSTC;
DummyRecorder writer(mSMS);
diff --git a/media/libstagefright/timedtext/TimedText3GPPSource.h b/media/libstagefright/timedtext/TimedText3GPPSource.h
index cb7e47c..dfc6418 100644
--- a/media/libstagefright/timedtext/TimedText3GPPSource.h
+++ b/media/libstagefright/timedtext/TimedText3GPPSource.h
@@ -28,26 +28,26 @@ class MediaBuffer;
class Parcel;
class TimedText3GPPSource : public TimedTextSource {
- public:
- TimedText3GPPSource(const sp<MediaSource>& mediaSource);
- virtual status_t start() { return mSource->start(); }
- virtual status_t stop() { return mSource->stop(); }
- virtual status_t read(
- int64_t *timeUs,
- Parcel *parcel,
- const MediaSource::ReadOptions *options = NULL);
- virtual status_t extractGlobalDescriptions(Parcel *parcel);
-
- protected:
- virtual ~TimedText3GPPSource();
-
- private:
- sp<MediaSource> mSource;
-
- status_t extractAndAppendLocalDescriptions(
- int64_t timeUs, const MediaBuffer *textBuffer, Parcel *parcel);
-
- DISALLOW_EVIL_CONSTRUCTORS(TimedText3GPPSource);
+public:
+ TimedText3GPPSource(const sp<MediaSource>& mediaSource);
+ virtual status_t start() { return mSource->start(); }
+ virtual status_t stop() { return mSource->stop(); }
+ virtual status_t read(
+ int64_t *timeUs,
+ Parcel *parcel,
+ const MediaSource::ReadOptions *options = NULL);
+ virtual status_t extractGlobalDescriptions(Parcel *parcel);
+
+protected:
+ virtual ~TimedText3GPPSource();
+
+private:
+ sp<MediaSource> mSource;
+
+ status_t extractAndAppendLocalDescriptions(
+ int64_t timeUs, const MediaBuffer *textBuffer, Parcel *parcel);
+
+ DISALLOW_EVIL_CONSTRUCTORS(TimedText3GPPSource);
};
} // namespace android
diff --git a/media/libstagefright/timedtext/TimedTextSRTSource.h b/media/libstagefright/timedtext/TimedTextSRTSource.h
index a0734d9..acc01f9 100644
--- a/media/libstagefright/timedtext/TimedTextSRTSource.h
+++ b/media/libstagefright/timedtext/TimedTextSRTSource.h
@@ -31,43 +31,43 @@ class MediaBuffer;
class Parcel;
class TimedTextSRTSource : public TimedTextSource {
- public:
- TimedTextSRTSource(const sp<DataSource>& dataSource);
- virtual status_t start();
- virtual status_t stop();
- virtual status_t read(
- int64_t *timeUs,
- Parcel *parcel,
- const MediaSource::ReadOptions *options = NULL);
+public:
+ TimedTextSRTSource(const sp<DataSource>& dataSource);
+ virtual status_t start();
+ virtual status_t stop();
+ virtual status_t read(
+ int64_t *timeUs,
+ Parcel *parcel,
+ const MediaSource::ReadOptions *options = NULL);
- protected:
- virtual ~TimedTextSRTSource();
+protected:
+ virtual ~TimedTextSRTSource();
- private:
- sp<DataSource> mSource;
+private:
+ sp<DataSource> mSource;
- struct TextInfo {
- int64_t endTimeUs;
- // The offset of the text in the original file.
- off64_t offset;
- int textLen;
- };
+ struct TextInfo {
+ int64_t endTimeUs;
+ // The offset of the text in the original file.
+ off64_t offset;
+ int textLen;
+ };
- int mIndex;
- KeyedVector<int64_t, TextInfo> mTextVector;
+ int mIndex;
+ KeyedVector<int64_t, TextInfo> mTextVector;
- void reset();
- status_t scanFile();
- status_t getNextSubtitleInfo(
- off64_t *offset, int64_t *startTimeUs, TextInfo *info);
- status_t readNextLine(off64_t *offset, AString *data);
- status_t getText(
- const MediaSource::ReadOptions *options,
- AString *text, int64_t *startTimeUs, int64_t *endTimeUs);
- status_t extractAndAppendLocalDescriptions(
- int64_t timeUs, const AString &text, Parcel *parcel);
+ void reset();
+ status_t scanFile();
+ status_t getNextSubtitleInfo(
+ off64_t *offset, int64_t *startTimeUs, TextInfo *info);
+ status_t readNextLine(off64_t *offset, AString *data);
+ status_t getText(
+ const MediaSource::ReadOptions *options,
+ AString *text, int64_t *startTimeUs, int64_t *endTimeUs);
+ status_t extractAndAppendLocalDescriptions(
+ int64_t timeUs, const AString &text, Parcel *parcel);
- DISALLOW_EVIL_CONSTRUCTORS(TimedTextSRTSource);
+ DISALLOW_EVIL_CONSTRUCTORS(TimedTextSRTSource);
};
} // namespace android
diff --git a/media/tests/omxjpegdecoder/Android.mk b/media/tests/omxjpegdecoder/Android.mk
index 025a131..3e09a5f 100644
--- a/media/tests/omxjpegdecoder/Android.mk
+++ b/media/tests/omxjpegdecoder/Android.mk
@@ -40,9 +40,9 @@ LOCAL_C_INCLUDES := \
$(TOP)/external/skia/include/utils \
$(TOP)/external/skia/include/effects \
$(TOP)/frameworks/base/media/libstagefright \
- $(TOP)/frameworks/base/include/media/stagefright/openmax \
$(TOP)/frameworks/base/include/ \
- $(TOP)/frameworks/base/
+ $(TOP)/frameworks/base/ \
+ $(TOP)/frameworks/native/include/media/openmax
LOCAL_MODULE := jpeg_bench
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 93d8675..2acf554 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -56,8 +56,8 @@
<string name="usb_accessory_uri_prompt" msgid="513450621413733343">"Tidak ada apl terpasang yang bekerja dengan aksesori USB ini. Pelajari lebih lanjut tentang aksesori ini di <xliff:g id="URL">%1$s</xliff:g>"</string>
<string name="title_usb_accessory" msgid="4966265263465181372">"Aksesori USB"</string>
<string name="label_view" msgid="6304565553218192990">"Lihat"</string>
- <string name="always_use_device" msgid="1450287437017315906">"Gunakan secara bawaan untuk perangkat USB ini"</string>
- <string name="always_use_accessory" msgid="1210954576979621596">"Gunakan secara bawaan untuk aksesori USB ini"</string>
+ <string name="always_use_device" msgid="1450287437017315906">"Gunakan secara default untuk perangkat USB ini"</string>
+ <string name="always_use_accessory" msgid="1210954576979621596">"Gunakan secara default untuk aksesori USB ini"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Perbesar utk mengisi layar"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Rentangkn utk mngisi layar"</string>
<string name="compat_mode_help_header" msgid="7969493989397529910">"Perbesar/perkecil untuk kompatibilitas"</string>
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index 81b9464..bfa4a49 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -190,13 +190,13 @@ void AudioFlinger::onFirstRef()
continue;
ALOGI("Loaded %s audio interface from %s (%s)", audio_interfaces[i],
- mod->name, mod->id);
+ mod->name, mod->id);
mAudioHwDevs.push(dev);
if (mPrimaryHardwareDev == NULL) {
mPrimaryHardwareDev = dev;
ALOGI("Using '%s' (%s.%s) as the primary audio interface",
- mod->name, mod->id, audio_interfaces[i]);
+ mod->name, mod->id, audio_interfaces[i]);
}
}
@@ -515,7 +515,7 @@ sp<IAudioTrack> AudioFlinger::createTrack(
}
Exit:
- if(status) {
+ if (status != NULL) {
*status = lStatus;
}
return trackHandle;
@@ -610,7 +610,7 @@ status_t AudioFlinger::setMasterVolume(float value)
mMasterVolume = value;
mMasterVolumeSW = swmv;
for (size_t i = 0; i < mPlaybackThreads.size(); i++)
- mPlaybackThreads.valueAt(i)->setMasterVolume(swmv);
+ mPlaybackThreads.valueAt(i)->setMasterVolume(swmv);
return NO_ERROR;
}
@@ -642,7 +642,7 @@ status_t AudioFlinger::setMode(audio_mode_t mode)
Mutex::Autolock _l(mLock);
mMode = mode;
for (size_t i = 0; i < mPlaybackThreads.size(); i++)
- mPlaybackThreads.valueAt(i)->setMode(mode);
+ mPlaybackThreads.valueAt(i)->setMode(mode);
}
return ret;
@@ -693,7 +693,7 @@ status_t AudioFlinger::setMasterMute(bool muted)
// This is an optimization, so PlaybackThread doesn't have to look at the one from AudioFlinger
mMasterMute = muted;
for (size_t i = 0; i < mPlaybackThreads.size(); i++)
- mPlaybackThreads.valueAt(i)->setMasterMute(muted);
+ mPlaybackThreads.valueAt(i)->setMasterMute(muted);
return NO_ERROR;
}
@@ -723,8 +723,9 @@ float AudioFlinger::masterVolume_l() const
AutoMutex lock(mHardwareLock);
mHardwareStatus = AUDIO_HW_GET_MASTER_VOLUME;
- assert(NULL != mPrimaryHardwareDev);
- assert(NULL != mPrimaryHardwareDev->get_master_volume);
+ ALOG_ASSERT((NULL != mPrimaryHardwareDev) &&
+ (NULL != mPrimaryHardwareDev->get_master_volume),
+ "can't get master volume");
mPrimaryHardwareDev->get_master_volume(mPrimaryHardwareDev, &ret_val);
mHardwareStatus = AUDIO_HW_IDLE;
@@ -760,7 +761,7 @@ status_t AudioFlinger::setStreamVolume(audio_stream_type_t stream, float value,
if (thread == NULL) {
for (size_t i = 0; i < mPlaybackThreads.size(); i++) {
- mPlaybackThreads.valueAt(i)->setStreamVolume(stream, value);
+ mPlaybackThreads.valueAt(i)->setStreamVolume(stream, value);
}
} else {
thread->setStreamVolume(stream, value);
@@ -785,7 +786,7 @@ status_t AudioFlinger::setStreamMute(audio_stream_type_t stream, bool muted)
AutoMutex lock(mLock);
mStreamTypes[stream].mute = muted;
for (uint32_t i = 0; i < mPlaybackThreads.size(); i++)
- mPlaybackThreads.valueAt(i)->setStreamMute(stream, muted);
+ mPlaybackThreads.valueAt(i)->setStreamMute(stream, muted);
return NO_ERROR;
}
@@ -1160,7 +1161,7 @@ void AudioFlinger::ThreadBase::sendConfigEvent_l(int event, int param)
void AudioFlinger::ThreadBase::processConfigEvents()
{
mLock.lock();
- while(!mConfigEvents.isEmpty()) {
+ while (!mConfigEvents.isEmpty()) {
ALOGV("processConfigEvents() remaining events %d", mConfigEvents.size());
ConfigEvent configEvent = mConfigEvents[0];
mConfigEvents.removeAt(0);
@@ -1344,13 +1345,13 @@ void AudioFlinger::ThreadBase::checkSuspendOnAddEffectChain_l(const sp<EffectCha
mSuspendedSessions.editValueAt(index);
for (size_t i = 0; i < sessionEffects.size(); i++) {
- sp <SuspendedSessionDesc> desc = sessionEffects.valueAt(i);
+ sp<SuspendedSessionDesc> desc = sessionEffects.valueAt(i);
for (int j = 0; j < desc->mRefCount; j++) {
if (sessionEffects.keyAt(i) == EffectChain::kKeyForSuspendAll) {
chain->setEffectSuspendedAll_l(true);
} else {
ALOGV("checkSuspendOnAddEffectChain_l() suspending effects %08x",
- desc->mType.timeLow);
+ desc->mType.timeLow);
chain->setEffectSuspended_l(&desc->mType, true);
}
}
@@ -1385,7 +1386,7 @@ void AudioFlinger::ThreadBase::updateSuspendedSessions_l(const effect_uuid_t *ty
}
index = sessionEffects.indexOfKey(key);
- sp <SuspendedSessionDesc> desc;
+ sp<SuspendedSessionDesc> desc;
if (suspend) {
if (index >= 0) {
desc = sessionEffects.valueAt(index);
@@ -1658,14 +1659,14 @@ sp<AudioFlinger::PlaybackThread::Track> AudioFlinger::PlaybackThread::createTra
// createTrack() was called by the client process.
if (!mStreamTypes[streamType].valid) {
ALOGW("createTrack_l() on thread %p: invalidating track on stream %d",
- this, streamType);
+ this, streamType);
android_atomic_or(CBLK_INVALID_ON, &track->mCblk->flags);
}
}
lStatus = NO_ERROR;
Exit:
- if(status) {
+ if (status) {
*status = lStatus;
}
return track;
@@ -2644,10 +2645,10 @@ bool AudioFlinger::MixerThread::checkForNewParameters_l()
status = mOutput->stream->common.set_parameters(&mOutput->stream->common,
keyValuePair.string());
if (!mStandby && status == INVALID_OPERATION) {
- mOutput->stream->common.standby(&mOutput->stream->common);
- mStandby = true;
- mBytesWritten = 0;
- status = mOutput->stream->common.set_parameters(&mOutput->stream->common,
+ mOutput->stream->common.standby(&mOutput->stream->common);
+ mStandby = true;
+ mBytesWritten = 0;
+ status = mOutput->stream->common.set_parameters(&mOutput->stream->common,
keyValuePair.string());
}
if (status == NO_ERROR && reconfig) {
@@ -2855,7 +2856,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep
tracksToRemove->add(trackToRemove);
mActiveTracks.remove(trackToRemove);
if (!mEffectChains.isEmpty()) {
- ALOGV("stopping track on chain %p for session Id: %d", effectChains[0].get(),
+ ALOGV("stopping track on chain %p for session Id: %d", mEffectChains[0].get(),
trackToRemove->sessionId());
mEffectChains[0]->decActiveTrackCnt();
}
@@ -2901,7 +2902,7 @@ void AudioFlinger::DirectOutputThread::threadLoop_mix()
size_t count = mFrameCount * mChannelCount;
uint8_t *src = (uint8_t *)mMixBuffer + count-1;
int16_t *dst = mMixBuffer + count-1;
- while(count--) {
+ while (count--) {
*dst-- = (int16_t)(*src--^0x80) << 8;
}
}
@@ -2954,7 +2955,7 @@ void AudioFlinger::DirectOutputThread::threadLoop_mix()
size_t count = mFrameCount * mChannelCount;
int16_t *src = mMixBuffer;
uint8_t *dst = (uint8_t *)mMixBuffer;
- while(count--) {
+ while (count--) {
*dst++ = (uint8_t)(((int32_t)*src++ + (1<<7)) >> 8)^0x80;
}
}
@@ -3013,10 +3014,10 @@ bool AudioFlinger::DirectOutputThread::checkForNewParameters_l()
status = mOutput->stream->common.set_parameters(&mOutput->stream->common,
keyValuePair.string());
if (!mStandby && status == INVALID_OPERATION) {
- mOutput->stream->common.standby(&mOutput->stream->common);
- mStandby = true;
- mBytesWritten = 0;
- status = mOutput->stream->common.set_parameters(&mOutput->stream->common,
+ mOutput->stream->common.standby(&mOutput->stream->common);
+ mStandby = true;
+ mBytesWritten = 0;
+ status = mOutput->stream->common.set_parameters(&mOutput->stream->common,
keyValuePair.string());
}
if (status == NO_ERROR && reconfig) {
@@ -3207,7 +3208,7 @@ void AudioFlinger::DuplicatingThread::updateWaitTime_l()
bool AudioFlinger::DuplicatingThread::outputsReady(const SortedVector< sp<OutputTrack> > &outputTracks)
{
for (size_t i = 0; i < outputTracks.size(); i++) {
- sp <ThreadBase> thread = outputTracks[i]->thread().promote();
+ sp<ThreadBase> thread = outputTracks[i]->thread().promote();
if (thread == 0) {
ALOGW("DuplicatingThread::outputsReady() could not promote thread on output track %p", outputTracks[i].get());
return false;
@@ -3263,14 +3264,14 @@ AudioFlinger::ThreadBase::TrackBase::TrackBase(
ALOGV_IF(sharedBuffer != 0, "sharedBuffer: %p, size: %d", sharedBuffer->pointer(), sharedBuffer->size());
// ALOGD("Creating track with %d buffers @ %d bytes", bufferCount, bufferSize);
- size_t size = sizeof(audio_track_cblk_t);
- uint8_t channelCount = popcount(channelMask);
- size_t bufferSize = frameCount*channelCount*sizeof(int16_t);
- if (sharedBuffer == 0) {
- size += bufferSize;
- }
-
- if (client != NULL) {
+ size_t size = sizeof(audio_track_cblk_t);
+ uint8_t channelCount = popcount(channelMask);
+ size_t bufferSize = frameCount*channelCount*sizeof(int16_t);
+ if (sharedBuffer == 0) {
+ size += bufferSize;
+ }
+
+ if (client != NULL) {
mCblkMemory = client->heap()->allocate(size);
if (mCblkMemory != 0) {
mCblk = static_cast<audio_track_cblk_t *>(mCblkMemory->pointer());
@@ -3297,22 +3298,22 @@ AudioFlinger::ThreadBase::TrackBase::TrackBase(
client->heap()->dump("AudioTrack");
return;
}
- } else {
- mCblk = (audio_track_cblk_t *)(new uint8_t[size]);
- // construct the shared structure in-place.
- new(mCblk) audio_track_cblk_t();
- // clear all buffers
- mCblk->frameCount = frameCount;
- mCblk->sampleRate = sampleRate;
- mChannelCount = channelCount;
- mChannelMask = channelMask;
- mBuffer = (char*)mCblk + sizeof(audio_track_cblk_t);
- memset(mBuffer, 0, frameCount*channelCount*sizeof(int16_t));
- // Force underrun condition to avoid false underrun callback until first data is
- // written to buffer (other flags are cleared)
- mCblk->flags = CBLK_UNDERRUN_ON;
- mBufferEnd = (uint8_t *)mBuffer + bufferSize;
- }
+ } else {
+ mCblk = (audio_track_cblk_t *)(new uint8_t[size]);
+ // construct the shared structure in-place.
+ new(mCblk) audio_track_cblk_t();
+ // clear all buffers
+ mCblk->frameCount = frameCount;
+ mCblk->sampleRate = sampleRate;
+ mChannelCount = channelCount;
+ mChannelMask = channelMask;
+ mBuffer = (char*)mCblk + sizeof(audio_track_cblk_t);
+ memset(mBuffer, 0, frameCount*channelCount*sizeof(int16_t));
+ // Force underrun condition to avoid false underrun callback until first data is
+ // written to buffer (other flags are cleared)
+ mCblk->flags = CBLK_UNDERRUN_ON;
+ mBufferEnd = (uint8_t *)mBuffer + bufferSize;
+ }
}
AudioFlinger::ThreadBase::TrackBase::~TrackBase()
@@ -3490,22 +3491,22 @@ void AudioFlinger::PlaybackThread::Track::dump(char* buffer, size_t size)
// AudioBufferProvider interface
status_t AudioFlinger::PlaybackThread::Track::getNextBuffer(
- AudioBufferProvider::Buffer* buffer, int64_t pts)
+ AudioBufferProvider::Buffer* buffer, int64_t pts)
{
- audio_track_cblk_t* cblk = this->cblk();
- uint32_t framesReady;
- uint32_t framesReq = buffer->frameCount;
+ audio_track_cblk_t* cblk = this->cblk();
+ uint32_t framesReady;
+ uint32_t framesReq = buffer->frameCount;
- // Check if last stepServer failed, try to step now
- if (mStepServerFailed) {
- if (!step()) goto getNextBuffer_exit;
- ALOGV("stepServer recovered");
- mStepServerFailed = false;
- }
+ // Check if last stepServer failed, try to step now
+ if (mStepServerFailed) {
+ if (!step()) goto getNextBuffer_exit;
+ ALOGV("stepServer recovered");
+ mStepServerFailed = false;
+ }
- framesReady = cblk->framesReady();
+ framesReady = cblk->framesReady();
- if (CC_LIKELY(framesReady)) {
+ if (CC_LIKELY(framesReady)) {
uint32_t s = cblk->server;
uint32_t bufferEnd = cblk->serverBase + cblk->frameCount;
@@ -3517,21 +3518,21 @@ status_t AudioFlinger::PlaybackThread::Track::getNextBuffer(
framesReq = bufferEnd - s;
}
- buffer->raw = getBuffer(s, framesReq);
- if (buffer->raw == NULL) goto getNextBuffer_exit;
+ buffer->raw = getBuffer(s, framesReq);
+ if (buffer->raw == NULL) goto getNextBuffer_exit;
- buffer->frameCount = framesReq;
+ buffer->frameCount = framesReq;
return NO_ERROR;
- }
+ }
getNextBuffer_exit:
- buffer->raw = NULL;
- buffer->frameCount = 0;
- ALOGV("getNextBuffer() no more data for track %d on thread %p", mName, mThread.unsafe_get());
- return NOT_ENOUGH_DATA;
+ buffer->raw = NULL;
+ buffer->frameCount = 0;
+ ALOGV("getNextBuffer() no more data for track %d on thread %p", mName, mThread.unsafe_get());
+ return NOT_ENOUGH_DATA;
}
-uint32_t AudioFlinger::PlaybackThread::Track::framesReady() const{
+uint32_t AudioFlinger::PlaybackThread::Track::framesReady() const {
return mCblk->framesReady();
}
@@ -3683,8 +3684,8 @@ status_t AudioFlinger::PlaybackThread::Track::attachAuxEffect(int EffectId)
status_t status = DEAD_OBJECT;
sp<ThreadBase> thread = mThread.promote();
if (thread != 0) {
- PlaybackThread *playbackThread = (PlaybackThread *)thread.get();
- status = playbackThread->attachAuxEffect(this, EffectId);
+ PlaybackThread *playbackThread = (PlaybackThread *)thread.get();
+ status = playbackThread->attachAuxEffect(this, EffectId);
}
return status;
}
@@ -3884,7 +3885,7 @@ status_t AudioFlinger::PlaybackThread::TimedTrack::getNextBuffer(
{
Mutex::Autolock mttLock(mMediaTimeTransformLock);
- assert(mMediaTimeTransformValid);
+ ALOG_ASSERT(mMediaTimeTransformValid, "media time transform invalid");
if (mMediaTimeTransform.a_to_b_denom == 0) {
// the transform represents a pause, so yield silence
@@ -4103,14 +4104,14 @@ AudioFlinger::RecordThread::RecordTrack::RecordTrack(
mOverflow(false)
{
if (mCblk != NULL) {
- ALOGV("RecordTrack constructor, size %d", (int)mBufferEnd - (int)mBuffer);
- if (format == AUDIO_FORMAT_PCM_16_BIT) {
- mCblk->frameSize = mChannelCount * sizeof(int16_t);
- } else if (format == AUDIO_FORMAT_PCM_8_BIT) {
- mCblk->frameSize = mChannelCount * sizeof(int8_t);
- } else {
- mCblk->frameSize = sizeof(int8_t);
- }
+ ALOGV("RecordTrack constructor, size %d", (int)mBufferEnd - (int)mBuffer);
+ if (format == AUDIO_FORMAT_PCM_16_BIT) {
+ mCblk->frameSize = mChannelCount * sizeof(int16_t);
+ } else if (format == AUDIO_FORMAT_PCM_8_BIT) {
+ mCblk->frameSize = mChannelCount * sizeof(int8_t);
+ } else {
+ mCblk->frameSize = sizeof(int8_t);
+ }
}
}
@@ -4129,7 +4130,7 @@ status_t AudioFlinger::RecordThread::RecordTrack::getNextBuffer(AudioBufferProvi
uint32_t framesAvail;
uint32_t framesReq = buffer->frameCount;
- // Check if last stepServer failed, try to step now
+ // Check if last stepServer failed, try to step now
if (mStepServerFailed) {
if (!step()) goto getNextBuffer_exit;
ALOGV("stepServer recovered");
@@ -4975,7 +4976,7 @@ Exit:
status_t AudioFlinger::RecordThread::start(RecordThread::RecordTrack* recordTrack, pid_t tid)
{
ALOGV("RecordThread::start tid=%d", tid);
- sp <ThreadBase> strongMe = this;
+ sp<ThreadBase> strongMe = this;
status_t status = NO_ERROR;
{
AutoMutex lock(mLock);
@@ -5028,7 +5029,7 @@ startError:
void AudioFlinger::RecordThread::stop(RecordThread::RecordTrack* recordTrack) {
ALOGV("RecordThread::stop");
- sp <ThreadBase> strongMe = this;
+ sp<ThreadBase> strongMe = this;
{
AutoMutex lock(mLock);
if (mActiveTrack != 0 && recordTrack == mActiveTrack.get()) {
@@ -5195,8 +5196,9 @@ bool AudioFlinger::RecordThread::checkForNewParameters_l()
if (status == NO_ERROR) {
status = mInput->stream->common.set_parameters(&mInput->stream->common, keyValuePair.string());
if (status == INVALID_OPERATION) {
- mInput->stream->common.standby(&mInput->stream->common);
- status = mInput->stream->common.set_parameters(&mInput->stream->common, keyValuePair.string());
+ mInput->stream->common.standby(&mInput->stream->common);
+ status = mInput->stream->common.set_parameters(&mInput->stream->common,
+ keyValuePair.string());
}
if (reconfig) {
if (status == BAD_VALUE &&
@@ -5284,8 +5286,8 @@ void AudioFlinger::RecordThread::readInputParameters()
if (mSampleRate != mReqSampleRate && mChannelCount <= FCC_2 && mReqChannelCount <= FCC_2)
{
int channelCount;
- // optmization: if mono to mono, use the resampler in stereo to stereo mode to avoid
- // stereo to mono post process as the resampler always outputs stereo.
+ // optimization: if mono to mono, use the resampler in stereo to stereo mode to avoid
+ // stereo to mono post process as the resampler always outputs stereo.
if (mChannelCount == 1 && mReqChannelCount == 2) {
channelCount = 1;
} else {
@@ -5459,7 +5461,7 @@ status_t AudioFlinger::closeOutput(audio_io_handle_t output)
{
// keep strong reference on the playback thread so that
// it is not destroyed while exit() is executed
- sp <PlaybackThread> thread;
+ sp<PlaybackThread> thread;
{
Mutex::Autolock _l(mLock);
thread = checkPlaybackThread_l(output);
@@ -5486,7 +5488,7 @@ status_t AudioFlinger::closeOutput(audio_io_handle_t output)
if (thread->type() != ThreadBase::DUPLICATING) {
AudioStreamOut *out = thread->clearOutput();
- assert(out != NULL);
+ ALOG_ASSERT(out != NULL, "out shouldn't be NULL");
// from now on thread->mOutput is NULL
out->hwDev->close_output_stream(out->hwDev, out->stream);
delete out;
@@ -5612,7 +5614,7 @@ status_t AudioFlinger::closeInput(audio_io_handle_t input)
{
// keep strong reference on the record thread so that
// it is not destroyed while exit() is executed
- sp <RecordThread> thread;
+ sp<RecordThread> thread;
{
Mutex::Autolock _l(mLock);
thread = checkRecordThread_l(input);
@@ -5629,7 +5631,7 @@ status_t AudioFlinger::closeInput(audio_io_handle_t input)
// but the ThreadBase container still exists.
AudioStreamIn *in = thread->clearInput();
- assert(in != NULL);
+ ALOG_ASSERT(in != NULL, "in shouldn't be NULL");
// from now on thread->mInput is NULL
in->hwDev->close_input_stream(in->hwDev, in->stream);
delete in;
@@ -5745,7 +5747,7 @@ void AudioFlinger::purgeStaleEffects_l() {
AudioSessionRef *ref = mAudioSessionRefs.itemAt(k);
if (ref->mSessionid == sessionid) {
ALOGV(" session %d still exists for %d with %d refs",
- sessionid, ref->mPid, ref->mCnt);
+ sessionid, ref->mPid, ref->mCnt);
found = true;
break;
}
@@ -5978,7 +5980,7 @@ sp<IEffect> AudioFlinger::createEffect(pid_t pid,
// because of code checking output when entering the function.
// Note: io is never 0 when creating an effect on an input
if (io == 0) {
- // look for the thread where the specified audio session is present
+ // look for the thread where the specified audio session is present
for (size_t i = 0; i < mPlaybackThreads.size(); i++) {
if (mPlaybackThreads.valueAt(i)->hasAudioSession(sessionId) != 0) {
io = mPlaybackThreads.keyAt(i);
@@ -5986,12 +5988,12 @@ sp<IEffect> AudioFlinger::createEffect(pid_t pid,
}
}
if (io == 0) {
- for (size_t i = 0; i < mRecordThreads.size(); i++) {
- if (mRecordThreads.valueAt(i)->hasAudioSession(sessionId) != 0) {
- io = mRecordThreads.keyAt(i);
- break;
- }
- }
+ for (size_t i = 0; i < mRecordThreads.size(); i++) {
+ if (mRecordThreads.valueAt(i)->hasAudioSession(sessionId) != 0) {
+ io = mRecordThreads.keyAt(i);
+ break;
+ }
+ }
}
// If no output thread contains the requested session ID, default to
// first output. The effect chain will be moved to the correct output
@@ -6022,7 +6024,7 @@ sp<IEffect> AudioFlinger::createEffect(pid_t pid,
}
Exit:
- if(status) {
+ if (status != NULL) {
*status = lStatus;
}
return handle;
@@ -6225,7 +6227,7 @@ Exit:
handle.clear();
}
- if(status) {
+ if (status != NULL) {
*status = lStatus;
}
return handle;
@@ -6295,7 +6297,7 @@ void AudioFlinger::ThreadBase::removeEffect_l(const sp<EffectModule>& effect) {
}
void AudioFlinger::ThreadBase::lockEffectChains_l(
- Vector<sp <AudioFlinger::EffectChain> >& effectChains)
+ Vector< sp<AudioFlinger::EffectChain> >& effectChains)
{
effectChains = mEffectChains;
for (size_t i = 0; i < mEffectChains.size(); i++) {
@@ -6304,7 +6306,7 @@ void AudioFlinger::ThreadBase::lockEffectChains_l(
}
void AudioFlinger::ThreadBase::unlockEffectChains(
- const Vector<sp <AudioFlinger::EffectChain> >& effectChains)
+ const Vector< sp<AudioFlinger::EffectChain> >& effectChains)
{
for (size_t i = 0; i < effectChains.size(); i++) {
effectChains[i]->unlock();
@@ -6480,7 +6482,7 @@ status_t AudioFlinger::PlaybackThread::attachAuxEffect_l(
void AudioFlinger::PlaybackThread::detachAuxEffect_l(int effectId)
{
- for (size_t i = 0; i < mTracks.size(); ++i) {
+ for (size_t i = 0; i < mTracks.size(); ++i) {
sp<Track> track = mTracks[i];
if (track->auxEffectId() == effectId) {
attachAuxEffect_l(track, 0);
@@ -7264,7 +7266,7 @@ AudioFlinger::EffectHandle::EffectHandle(const sp<EffectModule>& effect,
if (mCblk != NULL) {
new(mCblk) effect_param_cblk_t();
mBuffer = (uint8_t *)mCblk + bufOffset;
- }
+ }
} else {
ALOGE("not enough memory for Effect size=%u", EFFECT_PARAM_BUFFER_SIZE + sizeof(effect_param_cblk_t));
return;
@@ -8031,7 +8033,7 @@ void AudioFlinger::EffectChain::checkSuspendOnEffectEnabled(const sp<EffectModul
}
}
ALOGV("checkSuspendOnEffectEnabled() enable suspending fx %08x",
- effect->desc().type.timeLow);
+ effect->desc().type.timeLow);
sp<SuspendedEffectDesc> desc = mSuspendedEffects.valueAt(index);
// if effect is requested to suspended but was not yet enabled, supend it now.
if (desc->mEffect == 0) {
@@ -8044,7 +8046,7 @@ void AudioFlinger::EffectChain::checkSuspendOnEffectEnabled(const sp<EffectModul
return;
}
ALOGV("checkSuspendOnEffectEnabled() disable restoring fx %08x",
- effect->desc().type.timeLow);
+ effect->desc().type.timeLow);
sp<SuspendedEffectDesc> desc = mSuspendedEffects.valueAt(index);
desc->mEffect.clear();
effect->setSuspended(false);
diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h
index f3c8dd2..0e4b24a 100644
--- a/services/audioflinger/AudioFlinger.h
+++ b/services/audioflinger/AudioFlinger.h
@@ -465,9 +465,9 @@ private:
// ThreadBase mutex before processing the mixer and effects. This guarantees the
// integrity of the chains during the process.
// Also sets the parameter 'effectChains' to current value of mEffectChains.
- void lockEffectChains_l(Vector<sp <EffectChain> >& effectChains);
+ void lockEffectChains_l(Vector< sp<EffectChain> >& effectChains);
// unlock effect chains after process
- void unlockEffectChains(const Vector<sp<EffectChain> >& effectChains);
+ void unlockEffectChains(const Vector< sp<EffectChain> >& effectChains);
// set audio mode to all effect chains
void setMode(audio_mode_t mode);
// get effect module with corresponding ID on specified audio session
@@ -1056,7 +1056,7 @@ private:
virtual uint32_t activeSleepTimeUs();
private:
- bool outputsReady(const SortedVector<sp<OutputTrack> > &outputTracks);
+ bool outputsReady(const SortedVector< sp<OutputTrack> > &outputTracks);
protected:
// threadLoop snippets
virtual void threadLoop_mix();
@@ -1504,7 +1504,7 @@ mutable Mutex mLock; // mutex for process, commands and handl
uint32_t strategy() const { return mStrategy; }
void setStrategy(uint32_t strategy)
- { mStrategy = strategy; }
+ { mStrategy = strategy; }
// suspend effect of the given type
void setEffectSuspended_l(const effect_uuid_t *type,
@@ -1544,7 +1544,7 @@ mutable Mutex mLock; // mutex for process, commands and handl
wp<ThreadBase> mThread; // parent mixer thread
Mutex mLock; // mutex protecting effect list
- Vector<sp<EffectModule> > mEffects; // list of effect modules
+ Vector< sp<EffectModule> > mEffects; // list of effect modules
int mSessionId; // audio session ID
int16_t *mInBuffer; // chain input buffer
int16_t *mOutBuffer; // chain output buffer
diff --git a/services/audioflinger/AudioMixer.cpp b/services/audioflinger/AudioMixer.cpp
index 2cec525..1ec238b 100644
--- a/services/audioflinger/AudioMixer.cpp
+++ b/services/audioflinger/AudioMixer.cpp
@@ -18,7 +18,6 @@
#define LOG_TAG "AudioMixer"
//#define LOG_NDEBUG 0
-#include <assert.h>
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
@@ -29,6 +28,7 @@
#include <cutils/bitops.h>
#include <cutils/compiler.h>
+#include <utils/Debug.h>
#include <system/audio.h>
@@ -46,7 +46,7 @@ AudioMixer::AudioMixer(size_t frameCount, uint32_t sampleRate)
: mTrackNames(0), mSampleRate(sampleRate)
{
// AudioMixer is not yet capable of multi-channel beyond stereo
- assert(2 == MAX_NUM_CHANNELS);
+ COMPILE_TIME_ASSERT_FUNCTION_SCOPE(2 == MAX_NUM_CHANNELS);
LocalClock lc;
@@ -124,7 +124,7 @@ void AudioMixer::invalidateState(uint32_t mask)
void AudioMixer::deleteTrackName(int name)
{
name -= TRACK0;
- assert(uint32_t(name) < MAX_NUM_TRACKS);
+ ALOG_ASSERT(uint32_t(name) < MAX_NUM_TRACKS, "bad track name %d", name);
ALOGV("deleteTrackName(%d)", name);
track_t& track(mState.tracks[ name ]);
if (track.enabled) {
@@ -146,7 +146,7 @@ void AudioMixer::deleteTrackName(int name)
void AudioMixer::enable(int name)
{
name -= TRACK0;
- assert(uint32_t(name) < MAX_NUM_TRACKS);
+ ALOG_ASSERT(uint32_t(name) < MAX_NUM_TRACKS, "bad track name %d", name);
track_t& track = mState.tracks[name];
if (!track.enabled) {
@@ -159,7 +159,7 @@ void AudioMixer::enable(int name)
void AudioMixer::disable(int name)
{
name -= TRACK0;
- assert(uint32_t(name) < MAX_NUM_TRACKS);
+ ALOG_ASSERT(uint32_t(name) < MAX_NUM_TRACKS, "bad track name %d", name);
track_t& track = mState.tracks[name];
if (track.enabled) {
@@ -172,7 +172,7 @@ void AudioMixer::disable(int name)
void AudioMixer::setParameter(int name, int target, int param, void *value)
{
name -= TRACK0;
- assert(uint32_t(name) < MAX_NUM_TRACKS);
+ ALOG_ASSERT(uint32_t(name) < MAX_NUM_TRACKS, "bad track name %d", name);
track_t& track = mState.tracks[name];
int valueInt = (int)value;
@@ -185,8 +185,9 @@ void AudioMixer::setParameter(int name, int target, int param, void *value)
case CHANNEL_MASK: {
uint32_t mask = (uint32_t)value;
if (track.channelMask != mask) {
- uint8_t channelCount = popcount(mask);
- assert((channelCount <= MAX_NUM_CHANNELS) && (channelCount));
+ uint32_t channelCount = popcount(mask);
+ ALOG_ASSERT((channelCount <= MAX_NUM_CHANNELS) && (channelCount),
+ "bad channel count %u", channelCount);
track.channelMask = mask;
track.channelCount = channelCount;
ALOGV("setParameter(TRACK, CHANNEL_MASK, %x)", mask);
@@ -208,15 +209,14 @@ void AudioMixer::setParameter(int name, int target, int param, void *value)
}
break;
default:
- // bad param
- assert(false);
+ LOG_FATAL("bad param");
}
break;
case RESAMPLE:
switch (param) {
case SAMPLE_RATE:
- assert(valueInt > 0);
+ ALOG_ASSERT(valueInt > 0, "bad sample rate %d", valueInt);
if (track.setResampler(uint32_t(valueInt), mSampleRate)) {
ALOGV("setParameter(RESAMPLE, SAMPLE_RATE, %u)",
uint32_t(valueInt));
@@ -228,8 +228,7 @@ void AudioMixer::setParameter(int name, int target, int param, void *value)
invalidateState(1 << name);
break;
default:
- // bad param
- assert(false);
+ LOG_FATAL("bad param");
}
break;
@@ -257,7 +256,7 @@ void AudioMixer::setParameter(int name, int target, int param, void *value)
}
break;
case AUXLEVEL:
- //assert(0 <= valueInt && valueInt <= MAX_GAIN_INT);
+ //ALOG_ASSERT(0 <= valueInt && valueInt <= MAX_GAIN_INT, "bad aux level %d", valueInt);
if (track.auxLevel != valueInt) {
ALOGV("setParameter(VOLUME, AUXLEVEL: %04x)", valueInt);
track.prevAuxLevel = track.auxLevel << 16;
@@ -277,14 +276,12 @@ void AudioMixer::setParameter(int name, int target, int param, void *value)
}
break;
default:
- // bad param
- assert(false);
+ LOG_FATAL("bad param");
}
break;
default:
- // bad target
- assert(false);
+ LOG_FATAL("bad target");
}
}
@@ -335,7 +332,7 @@ size_t AudioMixer::getUnreleasedFrames(int name) const
void AudioMixer::setBufferProvider(int name, AudioBufferProvider* bufferProvider)
{
name -= TRACK0;
- assert(uint32_t(name) < MAX_NUM_TRACKS);
+ ALOG_ASSERT(uint32_t(name) < MAX_NUM_TRACKS, "bad track name %d", name);
mState.tracks[name].bufferProvider = bufferProvider;
}
@@ -979,9 +976,9 @@ void AudioMixer::process__OneTrack16BitsStereoNoResampling(state_t* state,
// This method is only called when state->enabledTracks has exactly
// one bit set. The asserts below would verify this, but are commented out
// since the whole point of this method is to optimize performance.
- //assert(0 != state->enabledTracks);
+ //ALOG_ASSERT(0 != state->enabledTracks, "no tracks enabled");
const int i = 31 - __builtin_clz(state->enabledTracks);
- //assert((1 << i) == state->enabledTracks);
+ //ALOG_ASSERT((1 << i) == state->enabledTracks, "more than 1 track enabled");
const track_t& t = state->tracks[i];
AudioBufferProvider::Buffer& b(t.buffer);
diff --git a/services/audioflinger/AudioPolicyService.cpp b/services/audioflinger/AudioPolicyService.cpp
index d57326b..c23eb04 100644
--- a/services/audioflinger/AudioPolicyService.cpp
+++ b/services/audioflinger/AudioPolicyService.cpp
@@ -649,7 +649,7 @@ bool AudioPolicyService::AudioCommandThread::threadLoop()
mLock.lock();
while (!exitPending())
{
- while(!mAudioCommands.isEmpty()) {
+ while (!mAudioCommands.isEmpty()) {
nsecs_t curTime = systemTime();
// commands are sorted by increasing time stamp: execute them from index 0 and up
if (mAudioCommands[0]->mTime <= curTime) {
@@ -693,16 +693,16 @@ bool AudioPolicyService::AudioCommandThread::threadLoop()
delete data;
}break;
case SET_PARAMETERS: {
- ParametersData *data = (ParametersData *)command->mParam;
- ALOGV("AudioCommandThread() processing set parameters string %s, io %d",
- data->mKeyValuePairs.string(), data->mIO);
- command->mStatus = AudioSystem::setParameters(data->mIO, data->mKeyValuePairs);
- if (command->mWaitStatus) {
- command->mCond.signal();
- mWaitWorkCV.wait(mLock);
- }
- delete data;
- }break;
+ ParametersData *data = (ParametersData *)command->mParam;
+ ALOGV("AudioCommandThread() processing set parameters string %s, io %d",
+ data->mKeyValuePairs.string(), data->mIO);
+ command->mStatus = AudioSystem::setParameters(data->mIO, data->mKeyValuePairs);
+ if (command->mWaitStatus) {
+ command->mCond.signal();
+ mWaitWorkCV.wait(mLock);
+ }
+ delete data;
+ }break;
case SET_VOICE_VOLUME: {
VoiceVolumeData *data = (VoiceVolumeData *)command->mParam;
ALOGV("AudioCommandThread() processing set voice volume volume %f",
@@ -916,19 +916,19 @@ void AudioPolicyService::AudioCommandThread::insertCommand_l(AudioCommand *comma
AudioParameter param = AudioParameter(data->mKeyValuePairs);
AudioParameter param2 = AudioParameter(data2->mKeyValuePairs);
for (size_t j = 0; j < param.size(); j++) {
- String8 key;
- String8 value;
- param.getAt(j, key, value);
- for (size_t k = 0; k < param2.size(); k++) {
- String8 key2;
- String8 value2;
- param2.getAt(k, key2, value2);
- if (key2 == key) {
- param2.remove(key2);
- ALOGV("Filtering out parameter %s", key2.string());
- break;
- }
- }
+ String8 key;
+ String8 value;
+ param.getAt(j, key, value);
+ for (size_t k = 0; k < param2.size(); k++) {
+ String8 key2;
+ String8 value2;
+ param2.getAt(k, key2, value2);
+ if (key2 == key) {
+ param2.remove(key2);
+ ALOGV("Filtering out parameter %s", key2.string());
+ break;
+ }
+ }
}
// if all keys have been filtered out, remove the command.
// otherwise, update the key value pairs
@@ -1020,7 +1020,7 @@ int AudioPolicyService::startTone(audio_policy_tone_t tone,
ALOGE("startTone: illegal tone requested (%d)", tone);
if (stream != AUDIO_STREAM_VOICE_CALL)
ALOGE("startTone: illegal stream (%d) requested for tone %d", stream,
- tone);
+ tone);
mTonePlaybackThread->startToneCommand(ToneGenerator::TONE_SUP_CALL_WAITING,
AUDIO_STREAM_VOICE_CALL);
return 0;
diff --git a/services/audioflinger/AudioPolicyService.h b/services/audioflinger/AudioPolicyService.h
index 7119b90..9ed905d 100644
--- a/services/audioflinger/AudioPolicyService.h
+++ b/services/audioflinger/AudioPolicyService.h
@@ -311,8 +311,8 @@ private:
mutable Mutex mLock; // prevents concurrent access to AudioPolicy manager functions changing
// device connection state or routing
- sp <AudioCommandThread> mAudioCommandThread; // audio commands thread
- sp <AudioCommandThread> mTonePlaybackThread; // tone playback thread
+ sp<AudioCommandThread> mAudioCommandThread; // audio commands thread
+ sp<AudioCommandThread> mTonePlaybackThread; // tone playback thread
struct audio_policy_device *mpAudioPolicyDev;
struct audio_policy *mpAudioPolicy;
KeyedVector< audio_source_t, InputSourceDesc* > mInputSources;
diff --git a/services/audioflinger/AudioResampler.cpp b/services/audioflinger/AudioResampler.cpp
index 398ba0b..fbb54cf 100644
--- a/services/audioflinger/AudioResampler.cpp
+++ b/services/audioflinger/AudioResampler.cpp
@@ -227,7 +227,7 @@ void AudioResamplerOrder1::resampleStereo16(int32_t* out, size_t outFrameCount,
mX0L = mBuffer.i16[mBuffer.frameCount*2-2];
mX0R = mBuffer.i16[mBuffer.frameCount*2-1];
provider->releaseBuffer(&mBuffer);
- // mBuffer.frameCount == 0 now so we reload a new buffer
+ // mBuffer.frameCount == 0 now so we reload a new buffer
}
int16_t *in = mBuffer.i16;
diff --git a/services/audioflinger/AudioResampler.h b/services/audioflinger/AudioResampler.h
index 9deb796..1610e00 100644
--- a/services/audioflinger/AudioResampler.h
+++ b/services/audioflinger/AudioResampler.h
@@ -33,7 +33,7 @@ public:
// HIGH_QUALITY: fixed multi-tap FIR (e.g. 48KHz->44.1KHz)
// NOTE: high quality SRC will only be supported for
// certain fixed rate conversions. Sample rate cannot be
- // changed dynamically.
+ // changed dynamically.
enum src_quality {
DEFAULT=0,
LOW_QUALITY=1,
diff --git a/services/audioflinger/AudioResamplerCubic.h b/services/audioflinger/AudioResamplerCubic.h
index b72b62a..892785a 100644
--- a/services/audioflinger/AudioResamplerCubic.h
+++ b/services/audioflinger/AudioResamplerCubic.h
@@ -55,7 +55,7 @@ private:
p->y1 = p->y2;
p->y2 = p->y3;
p->y3 = in;
- p->a = (3 * (p->y1 - p->y2) - p->y0 + p->y3) >> 1;
+ p->a = (3 * (p->y1 - p->y2) - p->y0 + p->y3) >> 1;
p->b = (p->y2 << 1) + p->y0 - (((5 * p->y1 + p->y3)) >> 1);
p->c = (p->y2 - p->y0) >> 1;
}
diff --git a/services/audioflinger/AudioResamplerSinc.cpp b/services/audioflinger/AudioResamplerSinc.cpp
index d373c08..76662d8 100644
--- a/services/audioflinger/AudioResamplerSinc.cpp
+++ b/services/audioflinger/AudioResamplerSinc.cpp
@@ -222,7 +222,7 @@ void AudioResamplerSinc::resample(int32_t* out, size_t outFrameCount,
} else {
read<CHANNELS>(impulse, phaseFraction, mBuffer.i16, inputIndex);
}
- }
+ }
}
int16_t *in = mBuffer.i16;
const size_t frameCount = mBuffer.frameCount;
@@ -247,7 +247,7 @@ void AudioResamplerSinc::resample(int32_t* out, size_t outFrameCount,
if (inputIndex >= frameCount)
break; // need a new buffer
read<CHANNELS>(impulse, phaseFraction, in, inputIndex);
- } else if(phaseIndex == 2) { // maximum value
+ } else if (phaseIndex == 2) { // maximum value
inputIndex++;
if (inputIndex >= frameCount)
break; // 0 frame available, 2 frames needed
diff --git a/services/java/com/android/server/NativeDaemonConnector.java b/services/java/com/android/server/NativeDaemonConnector.java
index 6593a0f..0b5eaff 100644
--- a/services/java/com/android/server/NativeDaemonConnector.java
+++ b/services/java/com/android/server/NativeDaemonConnector.java
@@ -200,17 +200,15 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
/**
* Make command for daemon, escaping arguments as needed.
- *
- * @return the final command.
*/
- private StringBuilder makeCommand(String cmd, Object... args)
+ private void makeCommand(StringBuilder builder, String cmd, Object... args)
throws NativeDaemonConnectorException {
// TODO: eventually enforce that cmd doesn't contain arguments
if (cmd.indexOf('\0') >= 0) {
throw new IllegalArgumentException("unexpected command: " + cmd);
}
- final StringBuilder builder = new StringBuilder(cmd);
+ builder.append(cmd);
for (Object arg : args) {
final String argString = String.valueOf(arg);
if (argString.indexOf('\0') >= 0) {
@@ -220,34 +218,6 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
builder.append(' ');
appendEscaped(builder, argString);
}
-
- return builder;
- }
-
- private int sendCommand(StringBuilder builder)
- throws NativeDaemonConnectorException {
-
- int sequenceNumber = mSequenceNumber.incrementAndGet();
-
- builder.insert(0, Integer.toString(sequenceNumber) + " ");
-
- log("SND -> {" + builder.toString() + "}");
-
- builder.append('\0');
-
- synchronized (mDaemonLock) {
- if (mOutputStream == null) {
- throw new NativeDaemonConnectorException("missing output stream");
- } else {
- try {
- mOutputStream.write(builder.toString().getBytes(Charsets.UTF_8));
- } catch (IOException e) {
- throw new NativeDaemonConnectorException("problem sending command", e);
- }
- }
- }
-
- return sequenceNumber;
}
/**
@@ -325,25 +295,46 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
public NativeDaemonEvent[] execute(int timeout, String cmd, Object... args)
throws NativeDaemonConnectorException {
final ArrayList<NativeDaemonEvent> events = Lists.newArrayList();
- final StringBuilder sentCommand = makeCommand(cmd, args);
- final int cmdNumber = sendCommand(sentCommand);
+
+ final int sequenceNumber = mSequenceNumber.incrementAndGet();
+ final StringBuilder cmdBuilder =
+ new StringBuilder(Integer.toString(sequenceNumber)).append(' ');
+
+ makeCommand(cmdBuilder, cmd, args);
+
+ final String logCmd = cmdBuilder.toString(); /* includes cmdNum, cmd, args */
+ log("SND -> {" + logCmd + "}");
+
+ cmdBuilder.append('\0');
+ final String sentCmd = cmdBuilder.toString(); /* logCmd + \0 */
+
+ synchronized (mDaemonLock) {
+ if (mOutputStream == null) {
+ throw new NativeDaemonConnectorException("missing output stream");
+ } else {
+ try {
+ mOutputStream.write(sentCmd.getBytes(Charsets.UTF_8));
+ } catch (IOException e) {
+ throw new NativeDaemonConnectorException("problem sending command", e);
+ }
+ }
+ }
NativeDaemonEvent event = null;
- cmd = sentCommand.toString();
do {
- event = mResponseQueue.remove(cmdNumber, timeout, cmd);
+ event = mResponseQueue.remove(sequenceNumber, timeout, sentCmd);
if (event == null) {
- loge("timed-out waiting for response to " + cmdNumber + " " + cmd);
- throw new NativeDaemonFailureException(cmd, event);
+ loge("timed-out waiting for response to " + logCmd);
+ throw new NativeDaemonFailureException(logCmd, event);
}
events.add(event);
} while (event.isClassContinue());
if (event.isClassClientError()) {
- throw new NativeDaemonArgumentException(cmd, event);
+ throw new NativeDaemonArgumentException(logCmd, event);
}
if (event.isClassServerError()) {
- throw new NativeDaemonFailureException(cmd, event);
+ throw new NativeDaemonFailureException(logCmd, event);
}
return events.toArray(new NativeDaemonEvent[events.size()]);
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index 63418db..52a4110 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -1858,6 +1858,7 @@ public class PowerManagerService extends IPowerManager.Stub
} else {
// Update the lights *before* taking care of turning the
// screen off, so we can initiate any animations that are desired.
+ mScreenOffReason = reason;
if (stateChanged) {
updateLightsLocked(newState, 0);
}
@@ -1876,7 +1877,6 @@ public class PowerManagerService extends IPowerManager.Stub
Binder.restoreCallingIdentity(identity);
}
mPowerState &= ~SCREEN_ON_BIT;
- mScreenOffReason = reason;
if (!mScreenBrightnessAnimator.isAnimating()) {
err = screenOffFinishedAnimatingLocked(reason);
} else {
diff --git a/telephony/java/com/android/internal/telephony/IccCard.java b/telephony/java/com/android/internal/telephony/IccCard.java
index fe80fdf..965bafa 100644
--- a/telephony/java/com/android/internal/telephony/IccCard.java
+++ b/telephony/java/com/android/internal/telephony/IccCard.java
@@ -186,10 +186,12 @@ public class IccCard {
if (phone.mCM.getLteOnCdmaMode() == Phone.LTE_ON_CDMA_TRUE
&& phone instanceof CDMALTEPhone) {
mIccRecords = new CdmaLteUiccRecords(phone);
- mIccFileHandler = new CdmaLteUiccFileHandler((CDMALTEPhone)phone);
+ mIccFileHandler = new CdmaLteUiccFileHandler(this, "", mPhone.mCM);
} else {
mIccRecords = is3gpp ? new SIMRecords(phone) : new RuimRecords(phone);
- mIccFileHandler = is3gpp ? new SIMFileHandler(phone) : new RuimFileHandler(phone);
+ // Correct aid will be set later (when GET_SIM_STATUS returns)
+ mIccFileHandler = is3gpp ? new SIMFileHandler(this, "", mPhone.mCM) :
+ new RuimFileHandler(this, "", mPhone.mCM);
}
mPhone.mCM.registerForOffOrNotAvailable(mHandler, EVENT_RADIO_OFF_OR_NOT_AVAILABLE, null);
mPhone.mCM.registerForOn(mHandler, EVENT_RADIO_ON, null);
@@ -572,6 +574,7 @@ public class IccCard {
}
if (oldState != State.READY && newState == State.READY) {
+ mIccFileHandler.setAid(getAid());
mIccRecords.onReady();
}
}
diff --git a/telephony/java/com/android/internal/telephony/IccFileHandler.java b/telephony/java/com/android/internal/telephony/IccFileHandler.java
index 380bfd1..70d8f7a 100644
--- a/telephony/java/com/android/internal/telephony/IccFileHandler.java
+++ b/telephony/java/com/android/internal/telephony/IccFileHandler.java
@@ -90,7 +90,9 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
static protected final int EVENT_READ_ICON_DONE = 10;
// member variables
- protected PhoneBase phone;
+ protected final CommandsInterface mCi;
+ protected final IccCard mParentCard;
+ protected String mAid;
static class LoadLinearFixedContext {
@@ -120,9 +122,10 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
/**
* Default constructor
*/
- protected IccFileHandler(PhoneBase phone) {
- super();
- this.phone = phone;
+ protected IccFileHandler(IccCard card, String aid, CommandsInterface ci) {
+ mParentCard = card;
+ mAid = aid;
+ mCi = ci;
}
public void dispose() {
@@ -145,9 +148,8 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
= obtainMessage(EVENT_GET_RECORD_SIZE_DONE,
new LoadLinearFixedContext(fileid, recordNum, onLoaded));
- phone.mCM.iccIOForApp(COMMAND_GET_RESPONSE, fileid, getEFPath(fileid),
- 0, 0, GET_RESPONSE_EF_SIZE_BYTES, null, null,
- phone.getIccCard().getAid(), response);
+ mCi.iccIOForApp(COMMAND_GET_RESPONSE, fileid, getEFPath(fileid),
+ 0, 0, GET_RESPONSE_EF_SIZE_BYTES, null, null, mAid, response);
}
/**
@@ -165,10 +167,9 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
onLoaded));
// TODO(): Verify when path changes are done.
- phone.mCM.iccIOForApp(COMMAND_GET_RESPONSE, IccConstants.EF_IMG, "img",
+ mCi.iccIOForApp(COMMAND_GET_RESPONSE, IccConstants.EF_IMG, "img",
recordNum, READ_RECORD_MODE_ABSOLUTE,
- GET_RESPONSE_EF_IMG_SIZE_BYTES, null, null,
- phone.getIccCard().getAid(), response);
+ GET_RESPONSE_EF_IMG_SIZE_BYTES, null, null, mAid, response);
}
/**
@@ -184,9 +185,8 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
Message response
= obtainMessage(EVENT_GET_EF_LINEAR_RECORD_SIZE_DONE,
new LoadLinearFixedContext(fileid, onLoaded));
- phone.mCM.iccIOForApp(COMMAND_GET_RESPONSE, fileid, getEFPath(fileid),
- 0, 0, GET_RESPONSE_EF_SIZE_BYTES, null, null, phone.getIccCard().getAid(),
- response);
+ mCi.iccIOForApp(COMMAND_GET_RESPONSE, fileid, getEFPath(fileid),
+ 0, 0, GET_RESPONSE_EF_SIZE_BYTES, null, null, mAid, response);
}
/**
@@ -202,9 +202,8 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
Message response = obtainMessage(EVENT_GET_RECORD_SIZE_DONE,
new LoadLinearFixedContext(fileid,onLoaded));
- phone.mCM.iccIOForApp(COMMAND_GET_RESPONSE, fileid, getEFPath(fileid),
- 0, 0, GET_RESPONSE_EF_SIZE_BYTES, null, null,
- phone.getIccCard().getAid(), response);
+ mCi.iccIOForApp(COMMAND_GET_RESPONSE, fileid, getEFPath(fileid),
+ 0, 0, GET_RESPONSE_EF_SIZE_BYTES, null, null, mAid, response);
}
/**
@@ -221,9 +220,8 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
Message response = obtainMessage(EVENT_GET_BINARY_SIZE_DONE,
fileid, 0, onLoaded);
- phone.mCM.iccIOForApp(COMMAND_GET_RESPONSE, fileid, getEFPath(fileid),
- 0, 0, GET_RESPONSE_EF_SIZE_BYTES, null, null,
- phone.getIccCard().getAid(), response);
+ mCi.iccIOForApp(COMMAND_GET_RESPONSE, fileid, getEFPath(fileid),
+ 0, 0, GET_RESPONSE_EF_SIZE_BYTES, null, null, mAid, response);
}
/**
@@ -241,8 +239,8 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
Message response = obtainMessage(EVENT_READ_ICON_DONE, fileid, 0,
onLoaded);
- phone.mCM.iccIOForApp(COMMAND_READ_BINARY, fileid, "img", highOffset, lowOffset,
- length, null, null, phone.getIccCard().getAid(), response);
+ mCi.iccIOForApp(COMMAND_READ_BINARY, fileid, "img", highOffset, lowOffset,
+ length, null, null, mAid, response);
}
/**
@@ -256,10 +254,9 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
*/
public void updateEFLinearFixed(int fileid, int recordNum, byte[] data,
String pin2, Message onComplete) {
- phone.mCM.iccIOForApp(COMMAND_UPDATE_RECORD, fileid, getEFPath(fileid),
+ mCi.iccIOForApp(COMMAND_UPDATE_RECORD, fileid, getEFPath(fileid),
recordNum, READ_RECORD_MODE_ABSOLUTE, data.length,
- IccUtils.bytesToHexString(data), pin2,
- phone.getIccCard().getAid(), onComplete);
+ IccUtils.bytesToHexString(data), pin2, mAid, onComplete);
}
/**
@@ -268,10 +265,9 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
* @param data must be exactly as long as the EF
*/
public void updateEFTransparent(int fileid, byte[] data, Message onComplete) {
- phone.mCM.iccIOForApp(COMMAND_UPDATE_BINARY, fileid, getEFPath(fileid),
+ mCi.iccIOForApp(COMMAND_UPDATE_BINARY, fileid, getEFPath(fileid),
0, 0, data.length,
- IccUtils.bytesToHexString(data), null,
- phone.getIccCard().getAid(), onComplete);
+ IccUtils.bytesToHexString(data), null, mAid, onComplete);
}
@@ -402,11 +398,10 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
lc.results = new ArrayList<byte[]>(lc.countRecords);
}
- phone.mCM.iccIOForApp(COMMAND_READ_RECORD, lc.efid, getEFPath(lc.efid),
+ mCi.iccIOForApp(COMMAND_READ_RECORD, lc.efid, getEFPath(lc.efid),
lc.recordNum,
READ_RECORD_MODE_ABSOLUTE,
- lc.recordSize, null, null,
- phone.getIccCard().getAid(),
+ lc.recordSize, null, null, mAid,
obtainMessage(EVENT_READ_RECORD_DONE, lc));
break;
case EVENT_GET_BINARY_SIZE_DONE:
@@ -441,9 +436,8 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
size = ((data[RESPONSE_DATA_FILE_SIZE_1] & 0xff) << 8)
+ (data[RESPONSE_DATA_FILE_SIZE_2] & 0xff);
- phone.mCM.iccIOForApp(COMMAND_READ_BINARY, fileid, getEFPath(fileid),
- 0, 0, size, null, null,
- phone.getIccCard().getAid(),
+ mCi.iccIOForApp(COMMAND_READ_BINARY, fileid, getEFPath(fileid),
+ 0, 0, size, null, null, mAid,
obtainMessage(EVENT_READ_BINARY_DONE,
fileid, 0, response));
break;
@@ -477,11 +471,10 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
if (lc.recordNum > lc.countRecords) {
sendResult(response, lc.results, null);
} else {
- phone.mCM.iccIOForApp(COMMAND_READ_RECORD, lc.efid, getEFPath(lc.efid),
+ mCi.iccIOForApp(COMMAND_READ_RECORD, lc.efid, getEFPath(lc.efid),
lc.recordNum,
READ_RECORD_MODE_ABSOLUTE,
- lc.recordSize, null, null,
- phone.getIccCard().getAid(),
+ lc.recordSize, null, null, mAid,
obtainMessage(EVENT_READ_RECORD_DONE, lc));
}
}
@@ -551,5 +544,8 @@ public abstract class IccFileHandler extends Handler implements IccConstants {
protected abstract void logd(String s);
protected abstract void loge(String s);
+ protected void setAid(String aid) {
+ mAid = aid;
+ }
}
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaLteUiccFileHandler.java b/telephony/java/com/android/internal/telephony/cdma/CdmaLteUiccFileHandler.java
index e195ff2..93a6290 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaLteUiccFileHandler.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaLteUiccFileHandler.java
@@ -17,6 +17,9 @@
package com.android.internal.telephony.cdma;
import android.util.Log;
+
+import com.android.internal.telephony.CommandsInterface;
+import com.android.internal.telephony.IccCard;
import com.android.internal.telephony.IccConstants;
import com.android.internal.telephony.IccFileHandler;
import android.os.Message;
@@ -27,8 +30,8 @@ import android.os.Message;
public final class CdmaLteUiccFileHandler extends IccFileHandler {
static final String LOG_TAG = "CDMA";
- public CdmaLteUiccFileHandler(CDMALTEPhone phone) {
- super(phone);
+ public CdmaLteUiccFileHandler(IccCard card, String aid, CommandsInterface ci) {
+ super(card, aid, ci);
}
protected String getEFPath(int efid) {
@@ -55,8 +58,8 @@ public final class CdmaLteUiccFileHandler extends IccFileHandler {
if (fileid == EF_CSIM_EPRL) {
// Entire PRL could be huge. We are only interested in
// the first 4 bytes of the record.
- phone.mCM.iccIOForApp(COMMAND_READ_BINARY, fileid, getEFPath(fileid),
- 0, 0, 4, null, null, phone.getIccCard().getAid(),
+ mCi.iccIOForApp(COMMAND_READ_BINARY, fileid, getEFPath(fileid),
+ 0, 0, 4, null, null, mAid,
obtainMessage(EVENT_READ_BINARY_DONE,
fileid, 0, onLoaded));
} else {
diff --git a/telephony/java/com/android/internal/telephony/cdma/RuimFileHandler.java b/telephony/java/com/android/internal/telephony/cdma/RuimFileHandler.java
index e854d7f..9f30d36 100644
--- a/telephony/java/com/android/internal/telephony/cdma/RuimFileHandler.java
+++ b/telephony/java/com/android/internal/telephony/cdma/RuimFileHandler.java
@@ -19,6 +19,8 @@ package com.android.internal.telephony.cdma;
import android.os.*;
import android.util.Log;
+import com.android.internal.telephony.CommandsInterface;
+import com.android.internal.telephony.IccCard;
import com.android.internal.telephony.IccConstants;
import com.android.internal.telephony.IccException;
import com.android.internal.telephony.IccFileHandler;
@@ -39,8 +41,8 @@ public final class RuimFileHandler extends IccFileHandler {
//***** Instance Variables
//***** Constructor
- public RuimFileHandler(PhoneBase phone) {
- super(phone);
+ public RuimFileHandler(IccCard card, String aid, CommandsInterface ci) {
+ super(card, aid, ci);
}
public void dispose() {
@@ -58,9 +60,9 @@ public final class RuimFileHandler extends IccFileHandler {
Message response = obtainMessage(EVENT_READ_ICON_DONE, fileid, 0,
onLoaded);
- phone.mCM.iccIOForApp(COMMAND_GET_RESPONSE, fileid, "img", 0, 0,
+ mCi.iccIOForApp(COMMAND_GET_RESPONSE, fileid, "img", 0, 0,
GET_RESPONSE_EF_IMG_SIZE_BYTES, null, null,
- phone.getIccCard().getAid(), response);
+ mAid, response);
}
@Override
diff --git a/telephony/java/com/android/internal/telephony/gsm/SIMFileHandler.java b/telephony/java/com/android/internal/telephony/gsm/SIMFileHandler.java
index 8c3bc0e..455ee74 100644
--- a/telephony/java/com/android/internal/telephony/gsm/SIMFileHandler.java
+++ b/telephony/java/com/android/internal/telephony/gsm/SIMFileHandler.java
@@ -19,6 +19,7 @@ package com.android.internal.telephony.gsm;
import android.os.Message;
import android.util.Log;
+import com.android.internal.telephony.CommandsInterface;
import com.android.internal.telephony.IccCard;
import com.android.internal.telephony.IccCardApplication;
import com.android.internal.telephony.IccConstants;
@@ -35,8 +36,8 @@ public final class SIMFileHandler extends IccFileHandler implements IccConstants
//***** Constructor
- public SIMFileHandler(PhoneBase phone) {
- super(phone);
+ public SIMFileHandler(IccCard card, String aid, CommandsInterface ci) {
+ super(card, aid, ci);
}
public void dispose() {
@@ -91,8 +92,8 @@ public final class SIMFileHandler extends IccFileHandler implements IccConstants
// The EFids in USIM phone book entries are decided by the card manufacturer.
// So if we don't match any of the cases above and if its a USIM return
// the phone book path.
- IccCard card = phone.getIccCard();
- if (card != null && card.isApplicationOnIcc(IccCardApplication.AppType.APPTYPE_USIM)) {
+ if (mParentCard != null
+ && mParentCard.isApplicationOnIcc(IccCardApplication.AppType.APPTYPE_USIM)) {
return MF_SIM + DF_TELECOM + DF_PHONEBOOK;
}
Log.e(LOG_TAG, "Error: EF Path being returned in null");
diff --git a/tests/RenderScriptTests/SampleTest/src/com/android/rs/sample/sample.rs b/tests/RenderScriptTests/SampleTest/src/com/android/rs/sample/sample.rs
index 0f3c0a7..e2bf43d 100644
--- a/tests/RenderScriptTests/SampleTest/src/com/android/rs/sample/sample.rs
+++ b/tests/RenderScriptTests/SampleTest/src/com/android/rs/sample/sample.rs
@@ -28,176 +28,6 @@ void setSampleData(rs_allocation dest, rs_allocation source, rs_sampler sampler)
allocSampler = sampler;
}
-static int32_t wrapI(rs_sampler_value wrap, int32_t coord, int32_t size) {
- if (wrap == RS_SAMPLER_WRAP) {
- coord = coord % size;
- if (coord < 0) {
- coord += size;
- }
- }
- return max(0, min(coord, size - 1));
-}
-
-#define convert_float(v) (float)v
-#define SAMPLE_1D_FUNC(vecsize) \
- static float##vecsize get1DSample##vecsize(rs_allocation a, float2 weights, \
- int iPixel, int next) { \
- uchar##vecsize *p0c = (uchar##vecsize*)rsGetElementAt(a, iPixel); \
- uchar##vecsize *p1c = (uchar##vecsize*)rsGetElementAt(a, next); \
- float##vecsize p0 = convert_float##vecsize(*p0c); \
- float##vecsize p1 = convert_float##vecsize(*p1c); \
- return p0 * weights.x + p1 * weights.y; \
- }
-#define SAMPLE_2D_FUNC(vecsize) \
- static float##vecsize get2DSample##vecsize(rs_allocation a, float4 weights, \
- int2 iPixel, int nextX, int nextY) { \
- uchar##vecsize *p0c = (uchar##vecsize*)rsGetElementAt(a, iPixel.x, iPixel.y); \
- uchar##vecsize *p1c = (uchar##vecsize*)rsGetElementAt(a, nextX, iPixel.y); \
- uchar##vecsize *p2c = (uchar##vecsize*)rsGetElementAt(a, iPixel.x, nextY); \
- uchar##vecsize *p3c = (uchar##vecsize*)rsGetElementAt(a, nextX, nextY); \
- float##vecsize p0 = convert_float##vecsize(*p0c); \
- float##vecsize p1 = convert_float##vecsize(*p1c); \
- float##vecsize p2 = convert_float##vecsize(*p2c); \
- float##vecsize p3 = convert_float##vecsize(*p3c); \
- return p0 * weights.x + p1 * weights.y + p2 * weights.z + p3 * weights.w; \
- }
-
-SAMPLE_1D_FUNC()
-SAMPLE_1D_FUNC(2)
-SAMPLE_1D_FUNC(3)
-SAMPLE_1D_FUNC(4)
-
-SAMPLE_2D_FUNC()
-SAMPLE_2D_FUNC(2)
-SAMPLE_2D_FUNC(3)
-SAMPLE_2D_FUNC(4)
-
-static float4 getBilinearSample565(rs_allocation a, float4 weights,
- int2 iPixel, int nextX, int nextY) {
- float4 zero = {0.0f, 0.0f, 0.0f, 0.0f};
- return zero;
-}
-
-static float4 getBilinearSample(rs_allocation a, float4 weights,
- int2 iPixel, int nextX, int nextY,
- uint32_t vecSize, rs_data_type dt) {
- if (dt == RS_TYPE_UNSIGNED_5_6_5) {
- return getBilinearSample565(a, weights, iPixel, nextX, nextY);
- }
-
- float4 result;
- switch(vecSize) {
- case 1:
- result.x = get2DSample(a, weights, iPixel, nextX, nextY);
- result.yzw = 0.0f;
- break;
- case 2:
- result.xy = get2DSample2(a, weights, iPixel, nextX, nextY);
- result.zw = 0.0f;
- break;
- case 3:
- result.xyz = get2DSample3(a, weights, iPixel, nextX, nextY);
- result.w = 0.0f;
- break;
- case 4:
- result = get2DSample4(a, weights, iPixel, nextX, nextY);
- break;
- }
-
- return result;
-}
-
-static float4 getNearestSample(rs_allocation a, int2 iPixel, uint32_t vecSize, rs_data_type dt) {
- if (dt == RS_TYPE_UNSIGNED_5_6_5) {
- float4 zero = {0.0f, 0.0f, 0.0f, 0.0f};
- return zero;
- }
-
- float4 result;
- switch(vecSize) {
- case 1:
- result.x = convert_float(*((uchar*)rsGetElementAt(a, iPixel.x, iPixel.y)));
- result.yzw = 0.0f;
- case 2:
- result.xy = convert_float2(*((uchar2*)rsGetElementAt(a, iPixel.x, iPixel.y)));
- result.zw = 0.0f;
- case 3:
- result.xyz = convert_float3(*((uchar3*)rsGetElementAt(a, iPixel.x, iPixel.y)));
- result.w = 0.0f;
- case 4:
- result = convert_float4(*((uchar4*)rsGetElementAt(a, iPixel.x, iPixel.y)));
- }
-
- return result;
-}
-
-
-// Naive implementation of texture filtering for prototyping purposes
-static float4 sample(rs_allocation a, rs_sampler s, float2 uv) {
-
- // Find out what kind of input data we are sampling
- rs_element elem = rsAllocationGetElement(a);
- uint32_t vecSize = rsElementGetVectorSize(elem);
- rs_data_kind dk = rsElementGetDataKind(elem);
- rs_data_type dt = rsElementGetDataType(elem);
-
- if (dk == RS_KIND_USER || (dt != RS_TYPE_UNSIGNED_8 && dt != RS_TYPE_UNSIGNED_5_6_5)) {
- float4 zero = {0.0f, 0.0f, 0.0f, 0.0f};
- return zero;
- }
- //rsDebug("*****************************************", 0);
- rs_sampler_value wrapS = rsgSamplerGetWrapS(s);
- rs_sampler_value wrapT = rsgSamplerGetWrapT(s);
-
- rs_sampler_value sampleMin = rsgSamplerGetMinification(s);
- rs_sampler_value sampleMag = rsgSamplerGetMagnification(s);
-
- int32_t sourceW = rsAllocationGetDimX(a);
- int32_t sourceH = rsAllocationGetDimY(a);
-
- float2 dimF;
- dimF.x = (float)(sourceW);
- dimF.y = (float)(sourceH);
- float2 pixelUV = uv * dimF;
- int2 iPixel = convert_int2(pixelUV);
-
- if (sampleMin == RS_SAMPLER_NEAREST ||
- sampleMag == RS_SAMPLER_NEAREST) {
- iPixel.x = wrapI(wrapS, iPixel.x, sourceW);
- iPixel.y = wrapI(wrapT, iPixel.y, sourceH);
- return getNearestSample(a, iPixel, vecSize, dt);
- }
-
- float2 frac = pixelUV - convert_float2(iPixel);
-
- if (frac.x < 0.5f) {
- iPixel.x -= 1;
- frac.x += 0.5f;
- } else {
- frac.x -= 0.5f;
- }
- if (frac.y < 0.5f) {
- iPixel.y -= 1;
- frac.y += 0.5f;
- } else {
- frac.y -= 0.5f;
- }
- float2 oneMinusFrac = 1.0f - frac;
-
- float4 weights;
- weights.x = oneMinusFrac.x * oneMinusFrac.y;
- weights.y = frac.x * oneMinusFrac.y;
- weights.z = oneMinusFrac.x * frac.y;
- weights.w = frac.x * frac.y;
-
- int32_t nextX = wrapI(wrapS, iPixel.x + 1, sourceW);
- int32_t nextY = wrapI(wrapT, iPixel.y + 1, sourceH);
- iPixel.x = wrapI(wrapS, iPixel.x, sourceW);
- iPixel.y = wrapI(wrapT, iPixel.y, sourceH);
-
- return getBilinearSample(a, weights, iPixel, nextX, nextY, vecSize, dt);
-}
-
void root(uchar4 *out, uint32_t x, uint32_t y) {
float destX = (float)rsAllocationGetDimX(destAlloc) - 1.0f;
@@ -207,7 +37,7 @@ void root(uchar4 *out, uint32_t x, uint32_t y) {
uv.x = (float)x / destX;
uv.y = (float)y / destY;
- out->xyz = convert_uchar3(sample(sourceAlloc, allocSampler, uv*2.0f).xyz);
+ out->xyz = convert_uchar3(rsSample(sourceAlloc, allocSampler, uv*2.0f).xyz);
out->w = 0xff;
}
diff --git a/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java b/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java
index 5c9bef9..f31ee68 100644
--- a/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java
@@ -113,11 +113,14 @@ public class WifiWatchdogStateMachine extends StateMachine {
private static final int RSSI_MONITOR_COUNT = 5;
private int mRssiMonitorCount = 0;
- /* Avoid flapping */
- private static final int MIN_INTERVAL_AVOID_BSSID_MS = 60 * 1000;
- private String mLastAvoidedBssid;
- /* a -ve interval to allow avoidance at boot */
- private long mLastBssidAvoidedTime = -MIN_INTERVAL_AVOID_BSSID_MS;
+ /* Avoid flapping. The interval is changed over time as long as we continue to avoid
+ * under the max interval after which we reset the interval again */
+ private static final int MIN_INTERVAL_AVOID_BSSID_MS[] = {0, 30 * 1000, 60 * 1000,
+ 5 * 60 * 1000, 30 * 60 * 1000};
+ /* Index into the interval array MIN_INTERVAL_AVOID_BSSID_MS */
+ private int mMinIntervalArrayIndex = 0;
+
+ private long mLastBssidAvoidedTime;
private int mCurrentSignalLevel;
@@ -744,11 +747,13 @@ public class WifiWatchdogStateMachine extends StateMachine {
mCurrentSignalLevel = calculateSignalLevel(msg.arg1);
//Ready to avoid bssid again ?
long time = android.os.SystemClock.elapsedRealtime();
- if (time - mLastBssidAvoidedTime > MIN_INTERVAL_AVOID_BSSID_MS) {
+ if (time - mLastBssidAvoidedTime > MIN_INTERVAL_AVOID_BSSID_MS[
+ mMinIntervalArrayIndex]) {
handleRssiChange();
} else {
if (DBG) log("Early to avoid " + mWifiInfo + " time: " + time +
- " last avoided: " + mLastBssidAvoidedTime);
+ " last avoided: " + mLastBssidAvoidedTime +
+ " mMinIntervalArrayIndex: " + mMinIntervalArrayIndex);
}
break;
default:
@@ -892,7 +897,20 @@ public class WifiWatchdogStateMachine extends StateMachine {
private void sendPoorLinkDetected() {
if (DBG) log("send POOR_LINK_DETECTED " + mWifiInfo);
mWsmChannel.sendMessage(POOR_LINK_DETECTED);
- mLastAvoidedBssid = mWifiInfo.getBSSID();
+
+ long time = android.os.SystemClock.elapsedRealtime();
+ if (time - mLastBssidAvoidedTime > MIN_INTERVAL_AVOID_BSSID_MS[
+ MIN_INTERVAL_AVOID_BSSID_MS.length - 1]) {
+ mMinIntervalArrayIndex = 1;
+ if (DBG) log("set mMinIntervalArrayIndex to 1");
+ } else {
+
+ if (mMinIntervalArrayIndex < MIN_INTERVAL_AVOID_BSSID_MS.length - 1) {
+ mMinIntervalArrayIndex++;
+ }
+ if (DBG) log("mMinIntervalArrayIndex: " + mMinIntervalArrayIndex);
+ }
+
mLastBssidAvoidedTime = android.os.SystemClock.elapsedRealtime();
}