summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrik Ryd <patrik.ryd@linaro.org>2012-05-16 16:39:21 +0200
committerPatrik Ryd <patrik.ryd@linaro.org>2012-05-16 16:39:21 +0200
commitb14d262b1f8836c3cda4734f37bbe49f1d54ae29 (patch)
treee03fcd794f81710d5cef5270b84f7cb216bac036
parentf5c200d9511f0a47371ffd96098871e136a1d638 (diff)
downloadbase-linaro_android_4.0.4_snowball.tar.gz
Revert "Adding multimedia extension"linaro_android_4.0.4_snowball
This reverts commit 7fcc59be0ba1d2d9404278903694b966a3a30629.
-rw-r--r--api/current.txt1
-rw-r--r--core/jni/Android.mk4
-rw-r--r--include/camera/CameraParameters.h11
-rw-r--r--include/gui/SurfaceTexture.h47
-rw-r--r--include/media/AudioSystem.h4
-rw-r--r--include/media/AudioTrack.h1
-rw-r--r--include/media/IAudioFlinger.h6
-rw-r--r--include/media/IAudioPolicyService.h3
-rw-r--r--include/media/stagefright/AudioPlayer.h1
-rw-r--r--include/media/stagefright/ColorConverter.h3
-rw-r--r--include/media/stagefright/FMRadioDataSource.h73
-rw-r--r--include/media/stagefright/MediaDefs.h2
-rw-r--r--include/media/stagefright/OMXCodec.h1
-rw-r--r--include/media/stagefright/foundation/ABitReader.h4
-rw-r--r--include/media/stagefright/openmax/OMX_IVCommon.h1
-rw-r--r--include/ui/PixelFormat.h6
-rw-r--r--include/ui/Region.h22
-rw-r--r--libs/camera/Android.mk4
-rw-r--r--libs/camera/CameraParameters.cpp12
-rw-r--r--libs/gui/Android.mk4
-rw-r--r--libs/gui/SurfaceTexture.cpp216
-rw-r--r--libs/ui/Android.mk4
-rw-r--r--libs/ui/PixelFormat.cpp10
-rw-r--r--media/java/android/media/MediaPlayer.java3
-rw-r--r--media/java/android/media/MediaRecorder.java2
-rw-r--r--media/libmedia/Android.mk16
-rw-r--r--media/libmedia/AudioSystem.cpp6
-rw-r--r--media/libmedia/IAudioFlinger.cpp42
-rw-r--r--media/libmedia/IAudioPolicyService.cpp9
-rw-r--r--media/libmediaplayerservice/Android.mk4
-rw-r--r--media/libmediaplayerservice/MediaPlayerService.cpp2
-rw-r--r--media/libmediaplayerservice/MediaPlayerService.h1
-rw-r--r--media/libstagefright/Android.mk6
-rw-r--r--media/libstagefright/AwesomePlayer.cpp14
-rwxr-xr-x[-rw-r--r--]media/libstagefright/CameraSource.cpp11
-rw-r--r--media/libstagefright/DataSource.cpp2
-rw-r--r--media/libstagefright/FMRadioDataSource.cpp100
-rwxr-xr-x[-rw-r--r--]media/libstagefright/MPEG4Writer.cpp0
-rw-r--r--media/libstagefright/MediaDefs.cpp2
-rw-r--r--media/libstagefright/MediaExtractor.cpp3
-rwxr-xr-x[-rw-r--r--]media/libstagefright/OMXCodec.cpp55
-rw-r--r--media/libstagefright/PCMExtractor.cpp276
-rw-r--r--media/libstagefright/colorconversion/Android.mk4
-rw-r--r--media/libstagefright/colorconversion/ColorConverter.cpp142
-rw-r--r--media/libstagefright/foundation/ABitReader.cpp15
-rw-r--r--media/libstagefright/foundation/Android.mk4
-rw-r--r--media/libstagefright/include/PCMExtractor.h68
-rw-r--r--media/libstagefright/omx/Android.mk4
-rw-r--r--media/libstagefright/omx/SoftOMXPlugin.cpp2
-rw-r--r--media/libstagefright/rtsp/AMPEG4AudioAssembler.cpp77
-rw-r--r--media/libstagefright/rtsp/Android.mk8
-rw-r--r--opengl/include/EGL/eglext.h12
-rw-r--r--opengl/include/GLES2/gl2ext.h26
-rw-r--r--opengl/libs/EGL/eglApi.cpp83
-rw-r--r--opengl/libs/EGL/egl_entries.in4
-rw-r--r--services/audioflinger/Android.mk4
-rw-r--r--services/audioflinger/AudioFlinger.cpp71
-rw-r--r--services/audioflinger/AudioFlinger.h8
-rw-r--r--services/audioflinger/AudioPolicyService.cpp14
-rw-r--r--services/audioflinger/AudioPolicyService.h3
-rw-r--r--services/surfaceflinger/Android.mk4
-rw-r--r--services/surfaceflinger/DisplayHardware/DisplayHardware.cpp2
-rw-r--r--services/surfaceflinger/DisplayHardware/HWComposer.cpp1
-rw-r--r--services/surfaceflinger/Layer.cpp12
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp59
65 files changed, 200 insertions, 1421 deletions
diff --git a/api/current.txt b/api/current.txt
index cc8706a3e68d..506ab35d11cb 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -10860,7 +10860,6 @@ package android.media {
public final class MediaRecorder.AudioSource {
field public static final int CAMCORDER = 5; // 0x5
field public static final int DEFAULT = 0; // 0x0
- field public static final int FM_RADIO_RX = 8; // 0x8
field public static final int MIC = 1; // 0x1
field public static final int VOICE_CALL = 4; // 0x4
field public static final int VOICE_COMMUNICATION = 7; // 0x7
diff --git a/core/jni/Android.mk b/core/jni/Android.mk
index 550722c6a22e..93fd5fb0d449 100644
--- a/core/jni/Android.mk
+++ b/core/jni/Android.mk
@@ -24,10 +24,6 @@ ifeq ($(USE_OPENGL_RENDERER),true)
LOCAL_CFLAGS += -DUSE_OPENGL_RENDERER
endif
-ifeq ($(BOARD_HAVE_CODEC_SUPPORT),STERICSSON_CODEC_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_CODEC_SUPPORT
-endif
-
LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES
LOCAL_SRC_FILES:= \
diff --git a/include/camera/CameraParameters.h b/include/camera/CameraParameters.h
index e0bba334575d..7edf6b4562ff 100644
--- a/include/camera/CameraParameters.h
+++ b/include/camera/CameraParameters.h
@@ -596,15 +596,9 @@ public:
// Pixel color formats for KEY_PREVIEW_FORMAT, KEY_PICTURE_FORMAT,
// and KEY_VIDEO_FRAME_FORMAT
static const char PIXEL_FORMAT_YUV422SP[];
- static const char PIXEL_FORMAT_YUV420P[]; // YV12
static const char PIXEL_FORMAT_YUV420SP[]; // NV21
- static const char PIXEL_FORMAT_YUV420SPNV12[]; // NV12
static const char PIXEL_FORMAT_YUV422I[]; // YUY2
- static const char PIXEL_FORMAT_YVU422SP[];
- static const char PIXEL_FORMAT_YVU422P[];
- static const char PIXEL_FORMAT_YVU420SP[];
- static const char PIXEL_FORMAT_YVU420P[];
- static const char PIXEL_FORMAT_YUV420MB[];
+ static const char PIXEL_FORMAT_YUV420P[]; // YV12
static const char PIXEL_FORMAT_RGB565[];
static const char PIXEL_FORMAT_RGBA8888[];
static const char PIXEL_FORMAT_JPEG[];
@@ -662,9 +656,6 @@ public:
// To stop continuous focus, applications should change the focus mode to
// other modes.
static const char FOCUS_MODE_CONTINUOUS_PICTURE[];
- // keys for record stride and slice height
- static const char KEY_RECORD_STRIDE[];
- static const char KEY_RECORD_SLICE_HEIGHT[];
private:
DefaultKeyedVector<String8,String8> mMap;
diff --git a/include/gui/SurfaceTexture.h b/include/gui/SurfaceTexture.h
index a8db994988fc..a8c76725e7c9 100644
--- a/include/gui/SurfaceTexture.h
+++ b/include/gui/SurfaceTexture.h
@@ -29,7 +29,7 @@
#include <utils/String8.h>
#include <utils/Vector.h>
#include <utils/threads.h>
-#include <hardware/copybit.h>
+
#define ANDROID_GRAPHICS_SURFACETEXTURE_JNI_ID "mSurfaceTexture"
namespace android {
@@ -47,7 +47,6 @@ public:
};
enum { NUM_BUFFER_SLOTS = 32 };
enum { NO_CONNECTED_API = 0 };
- enum { NUM_BLIT_BUFFER_SLOTS = 2 };
struct FrameAvailableListener : public virtual RefBase {
// onFrameAvailable() is called from queueBuffer() each time an
@@ -140,16 +139,6 @@ public:
// target texture belongs is bound to the calling thread.
status_t updateTexImage();
- // A surface that uses a non-native format requires conversion of
- // its buffers. This conversion can be deferred until the layer
- // based on this surface is drawn.
- status_t updateTexImage(bool deferConversion);
-
- // convert() performs the deferred texture conversion as scheduled
- // by updateTexImage(bool deferConversion).
- // The method returns immediately if no conversion is necessary.
- status_t convert();
-
// setBufferCountServer set the buffer count. If the client has requested
// a buffer count using setBufferCount, the server-buffer count will
// take effect once the client sets the count back to zero.
@@ -274,12 +263,6 @@ private:
EGLImageKHR createImage(EGLDisplay dpy,
const sp<GraphicBuffer>& graphicBuffer);
- // returns TRUE if buffer needs color format conversion
- bool conversionIsNeeded(const sp<GraphicBuffer>& graphicBuffer);
-
- // converts buffer to a suitable color format
- status_t convert(sp<GraphicBuffer> &srcBuf, sp<GraphicBuffer> &dstBuf);
-
status_t setBufferCountServerLocked(int bufferCount);
// computeCurrentTransformMatrix computes the transform matrix for the
@@ -525,33 +508,7 @@ private:
// with the surface Texture.
uint64_t mFrameCounter;
- // mBlitEngine is the handle to the copybit device which will be used in
- // case color transform is needed before the EGL image is created.
- copybit_device_t* mBlitEngine;
-
- // mBlitSlots contains several buffers which will
- // be rendered alternately in case color transform is needed (instead
- // of rendering the buffers in mSlots).
- BufferSlot mBlitSlots[NUM_BLIT_BUFFER_SLOTS];
-
- // mNextBlitSlot is the index of the blitter buffer (in mBlitSlots) which
- // will be used in the next color transform.
- int mNextBlitSlot;
-
- // mConversionSrcSlot designates the slot where source buffer
- // for the last deferred updateTexImage is located.
- int mConversionSrcSlot;
-
- // mConversionBltSlot designates the slot where destination buffer
- // for the last deferred updateTexImage is located.
- int mConversionBltSlot;
-
- // mNeedsConversion indicates that a format conversion is necessary
- // before the layer based on this surface is drawn.
- // This flag is set whenever updateTexImage() with deferred conversion
- // is called. It is cleared once the layer is drawn,
- // or when updateTexImage() w/o deferred conversion is called.
- bool mNeedsConversion;
+
};
// ----------------------------------------------------------------------------
diff --git a/include/media/AudioSystem.h b/include/media/AudioSystem.h
index 95d539efec8c..6a15f6ec90a6 100644
--- a/include/media/AudioSystem.h
+++ b/include/media/AudioSystem.h
@@ -110,6 +110,7 @@ public:
static int newAudioSessionId();
static void acquireAudioSessionId(int audioSession);
static void releaseAudioSessionId(int audioSession);
+
// types of io configuration change events received with ioConfigChanged()
enum io_config_event {
OUTPUT_OPENED,
@@ -162,8 +163,7 @@ public:
uint32_t format = AUDIO_FORMAT_DEFAULT,
uint32_t channels = AUDIO_CHANNEL_IN_MONO,
audio_in_acoustics_t acoustics = (audio_in_acoustics_t)0,
- int sessionId = 0,
- audio_input_clients *inputClientId = NULL);
+ int sessionId = 0);
static status_t startInput(audio_io_handle_t input);
static status_t stopInput(audio_io_handle_t input);
static void releaseInput(audio_io_handle_t input);
diff --git a/include/media/AudioTrack.h b/include/media/AudioTrack.h
index 62516c6c54a0..1c401e2b276b 100644
--- a/include/media/AudioTrack.h
+++ b/include/media/AudioTrack.h
@@ -451,6 +451,7 @@ private:
status_t setLoop_l(uint32_t loopStart, uint32_t loopEnd, int loopCount);
audio_io_handle_t getOutput_l();
status_t restoreTrack_l(audio_track_cblk_t*& cblk, bool fromStart);
+
sp<IAudioTrack> mAudioTrack;
sp<IMemory> mCblkMemory;
sp<AudioTrackThread> mAudioTrackThread;
diff --git a/include/media/IAudioFlinger.h b/include/media/IAudioFlinger.h
index 4e72448d330a..9e3cb7f3c383 100644
--- a/include/media/IAudioFlinger.h
+++ b/include/media/IAudioFlinger.h
@@ -126,9 +126,8 @@ public:
uint32_t *pSamplingRate,
uint32_t *pFormat,
uint32_t *pChannels,
- uint32_t acoustics,
- uint32_t *pInputClientId = NULL) = 0;
- virtual status_t closeInput(int input, uint32_t* inputClientId = NULL) = 0;
+ uint32_t acoustics) = 0;
+ virtual status_t closeInput(int input) = 0;
virtual status_t setStreamOutput(uint32_t stream, int output) = 0;
@@ -160,7 +159,6 @@ public:
int *enabled) = 0;
virtual status_t moveEffects(int session, int srcOutput, int dstOutput) = 0;
- virtual size_t readInput(uint32_t *input, uint32_t inputClientId, void *buffer, uint32_t bytes, uint32_t *pOverwrittenBytes) = 0;
};
diff --git a/include/media/IAudioPolicyService.h b/include/media/IAudioPolicyService.h
index 1607bc5cdddf..9807cbe56430 100644
--- a/include/media/IAudioPolicyService.h
+++ b/include/media/IAudioPolicyService.h
@@ -66,8 +66,7 @@ public:
uint32_t format = AUDIO_FORMAT_DEFAULT,
uint32_t channels = 0,
audio_in_acoustics_t acoustics = (audio_in_acoustics_t)0,
- int audioSession = 0,
- audio_input_clients *inputClientId = NULL) = 0;
+ int audioSession = 0) = 0;
virtual status_t startInput(audio_io_handle_t input) = 0;
virtual status_t stopInput(audio_io_handle_t input) = 0;
virtual void releaseInput(audio_io_handle_t input) = 0;
diff --git a/include/media/stagefright/AudioPlayer.h b/include/media/stagefright/AudioPlayer.h
index ae5937d469aa..0b79324db69d 100644
--- a/include/media/stagefright/AudioPlayer.h
+++ b/include/media/stagefright/AudioPlayer.h
@@ -101,6 +101,7 @@ private:
static size_t AudioSinkCallback(
MediaPlayerBase::AudioSink *audioSink,
void *data, size_t size, void *me);
+
size_t fillBuffer(void *data, size_t size);
int64_t getRealTimeUsLocked() const;
diff --git a/include/media/stagefright/ColorConverter.h b/include/media/stagefright/ColorConverter.h
index 0f9e40051872..85ba9206835c 100644
--- a/include/media/stagefright/ColorConverter.h
+++ b/include/media/stagefright/ColorConverter.h
@@ -73,9 +73,6 @@ private:
status_t convertQCOMYUV420SemiPlanar(
const BitmapParams &src, const BitmapParams &dst);
- status_t convertSTEYUV420PackedSemiPlanarMB(
- const BitmapParams &src, const BitmapParams &dst);
-
status_t convertYUV420SemiPlanar(
const BitmapParams &src, const BitmapParams &dst);
diff --git a/include/media/stagefright/FMRadioDataSource.h b/include/media/stagefright/FMRadioDataSource.h
deleted file mode 100644
index 96735550d846..000000000000
--- a/include/media/stagefright/FMRadioDataSource.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- * Copyright (C) 2010 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.
- *
- * Author: Andreas Gustafsson (andreas.a.gustafsson@stericsson.com)
- * for ST-Ericsson
- */
-
-#ifndef FMRADIO_DATA_SOURCE_H_
-
-#define FMRADIO_DATA_SOURCE_H_
-
-#include <stdio.h>
-
-#include <media/stagefright/DataSource.h>
-#include <media/stagefright/MediaErrors.h>
-#include <utils/threads.h>
-#include <hardware_legacy/AudioHardwareInterface.h>
-#include <media/AudioSystem.h>
-#include <system/audio.h>
-#include <hardware_legacy/AudioSystemLegacy.h>
-
-namespace android {
-
-class FMRadioDataSource : public DataSource {
-public:
- FMRadioDataSource();
-
- virtual status_t initCheck() const;
-
- virtual ssize_t readAt(off64_t offset, void *data, size_t size);
-
- virtual status_t getSize(off64_t *size);
-
- virtual uint32_t getBufferSize();
-
- virtual uint32_t getNumChannels();
-
- virtual uint32_t getSampleRate();
-
- virtual uint32_t getFormat();
-
-protected:
- virtual ~FMRadioDataSource();
-
-private:
- android_audio_legacy::AudioStreamIn *mStream;
- sp<IAudioFlinger> mAudioFlinger;
- FMRadioDataSource(const FMRadioDataSource &);
- FMRadioDataSource &operator=(const FMRadioDataSource &);
- audio_input_clients mInputClientId;
- uint32_t mFormat;
- uint32_t mChannels;
- uint32_t mSampleRate;
- uint32_t mOverwrittenBytes;
- uint32_t mFlags;
-};
-
-} // namespace android
-
-#endif // FMRADIO_DATA_SOURCE_H_
diff --git a/include/media/stagefright/MediaDefs.h b/include/media/stagefright/MediaDefs.h
index a533ed43e1a7..2eb259e8b590 100644
--- a/include/media/stagefright/MediaDefs.h
+++ b/include/media/stagefright/MediaDefs.h
@@ -26,10 +26,8 @@ extern const char *MEDIA_MIMETYPE_VIDEO_VPX;
extern const char *MEDIA_MIMETYPE_VIDEO_AVC;
extern const char *MEDIA_MIMETYPE_VIDEO_MPEG4;
extern const char *MEDIA_MIMETYPE_VIDEO_H263;
-extern const char *MEDIA_MIMETYPE_VIDEO_H263_SW;
extern const char *MEDIA_MIMETYPE_VIDEO_MPEG2;
extern const char *MEDIA_MIMETYPE_VIDEO_RAW;
-extern const char *MEDIA_MIMETYPE_VIDEO_VC1;
extern const char *MEDIA_MIMETYPE_AUDIO_AMR_NB;
extern const char *MEDIA_MIMETYPE_AUDIO_AMR_WB;
diff --git a/include/media/stagefright/OMXCodec.h b/include/media/stagefright/OMXCodec.h
index 5ebba96c9b57..84f8282f64b7 100644
--- a/include/media/stagefright/OMXCodec.h
+++ b/include/media/stagefright/OMXCodec.h
@@ -140,7 +140,6 @@ private:
kAvoidMemcopyInputRecordingFrames = 2048,
kRequiresLargerEncoderOutputBuffer = 4096,
kOutputBuffersAreUnreadable = 8192,
- kRequiresStoreMetaDataBeforeIdle = 16384,
};
enum BufferStatus {
diff --git a/include/media/stagefright/foundation/ABitReader.h b/include/media/stagefright/foundation/ABitReader.h
index 7a4270d53578..5510b12aee8c 100644
--- a/include/media/stagefright/foundation/ABitReader.h
+++ b/include/media/stagefright/foundation/ABitReader.h
@@ -31,8 +31,6 @@ struct ABitReader {
uint32_t getBits(size_t n);
void skipBits(size_t n);
- void rewindBits(size_t n);
-
void putBits(uint32_t x, size_t n);
size_t numBitsLeft() const;
@@ -41,9 +39,7 @@ struct ABitReader {
private:
const uint8_t *mData;
- const uint8_t *mOriginalData;
size_t mSize;
- size_t mOriginalSize;
uint32_t mReservoir; // left-aligned bits
size_t mNumBitsLeft;
diff --git a/include/media/stagefright/openmax/OMX_IVCommon.h b/include/media/stagefright/openmax/OMX_IVCommon.h
index 5df525c66782..8bb4dede8fda 100644
--- a/include/media/stagefright/openmax/OMX_IVCommon.h
+++ b/include/media/stagefright/openmax/OMX_IVCommon.h
@@ -159,7 +159,6 @@ typedef enum OMX_COLOR_FORMATTYPE {
OMX_COLOR_FormatAndroidOpaque = 0x7F000789,
OMX_TI_COLOR_FormatYUV420PackedSemiPlanar = 0x7F000100,
OMX_QCOM_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00,
- OMX_STE_COLOR_FormatYUV420PackedSemiPlanarMB = 0x7FA00000,
OMX_COLOR_FormatMax = 0x7FFFFFFF
} OMX_COLOR_FORMATTYPE;
diff --git a/include/ui/PixelFormat.h b/include/ui/PixelFormat.h
index e22071b541de..848c5a114907 100644
--- a/include/ui/PixelFormat.h
+++ b/include/ui/PixelFormat.h
@@ -72,12 +72,6 @@ enum {
// New formats can be added if they're also defined in
// pixelflinger/format.h
-
- // Added Support for YUV42XMBN,
- // Required for Copybit CC acceleration
- PIXEL_FORMAT_YCBCR42XMBN = HAL_PIXEL_FORMAT_YCBCR42XMBN,
- PIXEL_FORMAT_YCbCr_420_SP = HAL_PIXEL_FORMAT_YCbCr_420_SP,
- PIXEL_FORMAT_YCbCr_420_P = HAL_PIXEL_FORMAT_YCbCr_420_P,
};
typedef int32_t PixelFormat;
diff --git a/include/ui/Region.h b/include/ui/Region.h
index 9ce8efb5579c..6c9a6203e793 100644
--- a/include/ui/Region.h
+++ b/include/ui/Region.h
@@ -24,8 +24,6 @@
#include <ui/Rect.h>
-#include <hardware/copybit.h>
-
namespace android {
// ---------------------------------------------------------------------------
@@ -183,26 +181,6 @@ Region& Region::operator -= (const Region& rhs) {
Region& Region::operator += (const Point& pt) {
return translateSelf(pt.x, pt.y);
}
-
-// ---------------------------------------------------------------------------
-
-struct region_iterator : public copybit_region_t {
- region_iterator(const Region& region)
- : b(region.begin()), e(region.end()) {
- this->next = iterate;
- }
-private:
- static int iterate(copybit_region_t const * self, copybit_rect_t* rect) {
- region_iterator const* me = static_cast<region_iterator const*>(self);
- if (me->b != me->e) {
- *reinterpret_cast<Rect*>(rect) = *me->b++;
- return 1;
- }
- return 0;
- }
- mutable Region::const_iterator b;
- Region::const_iterator const e;
-};
// ---------------------------------------------------------------------------
}; // namespace android
diff --git a/libs/camera/Android.mk b/libs/camera/Android.mk
index 63abad2f46eb..7286f9295660 100644
--- a/libs/camera/Android.mk
+++ b/libs/camera/Android.mk
@@ -1,10 +1,6 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
-ifeq ($(BOARD_HAVE_CODEC_SUPPORT),STERICSSON_CODEC_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_CODEC_SUPPORT
-endif
-
LOCAL_SRC_FILES:= \
Camera.cpp \
CameraParameters.cpp \
diff --git a/libs/camera/CameraParameters.cpp b/libs/camera/CameraParameters.cpp
index 4bd6318e122a..c6087b404667 100644
--- a/libs/camera/CameraParameters.cpp
+++ b/libs/camera/CameraParameters.cpp
@@ -148,15 +148,9 @@ const char CameraParameters::SCENE_MODE_CANDLELIGHT[] = "candlelight";
const char CameraParameters::SCENE_MODE_BARCODE[] = "barcode";
const char CameraParameters::PIXEL_FORMAT_YUV422SP[] = "yuv422sp";
-const char CameraParameters::PIXEL_FORMAT_YUV420P[] = "yuv420p";
const char CameraParameters::PIXEL_FORMAT_YUV420SP[] = "yuv420sp";
-const char CameraParameters::PIXEL_FORMAT_YUV420SPNV12[] = "yuv420spnv12";
const char CameraParameters::PIXEL_FORMAT_YUV422I[] = "yuv422i-yuyv";
-const char CameraParameters::PIXEL_FORMAT_YUV420MB[] = "yuv420mb";
-const char CameraParameters::PIXEL_FORMAT_YVU422SP[] = "yvu422sp";
-const char CameraParameters::PIXEL_FORMAT_YVU422P[] = "yvu422p";
-const char CameraParameters::PIXEL_FORMAT_YVU420SP[] = "yvu420sp";
-const char CameraParameters::PIXEL_FORMAT_YVU420P[] = "yvu420p";
+const char CameraParameters::PIXEL_FORMAT_YUV420P[] = "yuv420p";
const char CameraParameters::PIXEL_FORMAT_RGB565[] = "rgb565";
const char CameraParameters::PIXEL_FORMAT_RGBA8888[] = "rgba8888";
const char CameraParameters::PIXEL_FORMAT_JPEG[] = "jpeg";
@@ -171,10 +165,6 @@ const char CameraParameters::FOCUS_MODE_EDOF[] = "edof";
const char CameraParameters::FOCUS_MODE_CONTINUOUS_VIDEO[] = "continuous-video";
const char CameraParameters::FOCUS_MODE_CONTINUOUS_PICTURE[] = "continuous-picture";
-// keys for record stride and sliceheight
-const char CameraParameters::KEY_RECORD_STRIDE[] = "record-stride";
-const char CameraParameters::KEY_RECORD_SLICE_HEIGHT[] = "record-slice-height";
-
CameraParameters::CameraParameters()
: mMap()
{
diff --git a/libs/gui/Android.mk b/libs/gui/Android.mk
index e79cd913e42a..9767568bed35 100644
--- a/libs/gui/Android.mk
+++ b/libs/gui/Android.mk
@@ -1,10 +1,6 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
-ifeq ($(BOARD_HAVE_CODEC_SUPPORT),STERICSSON_CODEC_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_CODEC_SUPPORT
-endif
-
LOCAL_SRC_FILES:= \
ISensorEventConnection.cpp \
ISensorServer.cpp \
diff --git a/libs/gui/SurfaceTexture.cpp b/libs/gui/SurfaceTexture.cpp
index e32df27f537e..4772189b7fb4 100644
--- a/libs/gui/SurfaceTexture.cpp
+++ b/libs/gui/SurfaceTexture.cpp
@@ -28,7 +28,6 @@
#include <gui/SurfaceTexture.h>
#include <hardware/hardware.h>
-#include <ui/PixelFormat.h>
#include <surfaceflinger/ISurfaceComposer.h>
#include <surfaceflinger/SurfaceComposerClient.h>
@@ -139,8 +138,6 @@ SurfaceTexture::SurfaceTexture(GLuint tex, bool allowSynchronousMode,
mUseFenceSync(false),
#endif
mTexTarget(texTarget),
- mNextBlitSlot(0),
- mNeedsConversion(false),
mFrameCounter(0) {
// Choose a name using the PID and a process-unique ID.
mName = String8::format("unnamed-%d-%d", getpid(), createProcessUniqueId());
@@ -151,26 +148,11 @@ SurfaceTexture::SurfaceTexture(GLuint tex, bool allowSynchronousMode,
mNextCrop.makeInvalid();
memcpy(mCurrentTransformMatrix, mtxIdentity,
sizeof(mCurrentTransformMatrix));
-
- for (int i = 0; i < NUM_BLIT_BUFFER_SLOTS; i++) {
- mBlitSlots[i].mEglImage = EGL_NO_IMAGE_KHR;
- mBlitSlots[i].mEglDisplay = EGL_NO_DISPLAY;
- }
-
- hw_module_t const* module;
- mBlitEngine = 0;
- if (hw_get_module(COPYBIT_HARDWARE_MODULE_ID, &module) == 0) {
- copybit_open(module, &mBlitEngine);
- }
- LOGE_IF(!mBlitEngine, "\nCannot open copybit mBlitEngine=%p", mBlitEngine);
}
SurfaceTexture::~SurfaceTexture() {
ST_LOGV("~SurfaceTexture");
freeAllBuffersLocked();
- if (mBlitEngine) {
- copybit_close(mBlitEngine);
- }
}
status_t SurfaceTexture::setBufferCountServerLocked(int bufferCount) {
@@ -765,11 +747,6 @@ status_t SurfaceTexture::setScalingMode(int mode) {
}
status_t SurfaceTexture::updateTexImage() {
- return updateTexImage(false);
-}
-
-#define STE_DEFERDBG 0
-status_t SurfaceTexture::updateTexImage(bool deferConversion) {
ST_LOGV("updateTexImage");
Mutex::Autolock lock(mMutex);
@@ -785,99 +762,20 @@ status_t SurfaceTexture::updateTexImage(bool deferConversion) {
int buf = *front;
// Update the GL texture object.
- EGLImageKHR image;
+ EGLImageKHR image = mSlots[buf].mEglImage;
EGLDisplay dpy = eglGetCurrentDisplay();
- sp<GraphicBuffer> graphicBuffer;
- if (conversionIsNeeded(mSlots[buf].mGraphicBuffer)) {
- mNeedsConversion = deferConversion;
- // If color conversion is needed we can't use the graphic buffers
- // located in mSlots for the textures (wrong color format). Instead
- // color convert it into a buffer in mBlitSlots and use that instead.
- image = mBlitSlots[mNextBlitSlot].mEglImage;
-
- // If there exists an image already, make sure that
- // the dimensions match the current source buffer.
- // Otherwise, destroy the buffer and let a new one be allocated.
- if (image != EGL_NO_IMAGE_KHR &&
- mSlots[buf].mGraphicBuffer != NULL &&
- mBlitSlots[mNextBlitSlot].mGraphicBuffer != NULL) {
- sp<GraphicBuffer> &srcBuf = mSlots[buf].mGraphicBuffer;
- sp<GraphicBuffer> &bltBuf =
- mBlitSlots[mNextBlitSlot].mGraphicBuffer;
- if (srcBuf->getWidth() != bltBuf->getWidth() ||
- srcBuf->getHeight() != bltBuf->getHeight()) {
- eglDestroyImageKHR(mBlitSlots[mNextBlitSlot].mEglDisplay,
- image);
- mBlitSlots[mNextBlitSlot].mEglImage = EGL_NO_IMAGE_KHR;
- mBlitSlots[mNextBlitSlot].mGraphicBuffer = NULL;
- image = EGL_NO_IMAGE_KHR;
- }
+ if (image == EGL_NO_IMAGE_KHR) {
+ if (mSlots[buf].mGraphicBuffer == 0) {
+ ST_LOGE("buffer at slot %d is null", buf);
+ return BAD_VALUE;
}
+ image = createImage(dpy, mSlots[buf].mGraphicBuffer);
+ mSlots[buf].mEglImage = image;
+ mSlots[buf].mEglDisplay = dpy;
if (image == EGL_NO_IMAGE_KHR) {
- sp<GraphicBuffer> &srcBuf = mSlots[buf].mGraphicBuffer;
- status_t res = 0;
-
- sp<GraphicBuffer> blitBuffer(
- mGraphicBufferAlloc->createGraphicBuffer(
- srcBuf->getWidth(), srcBuf->getHeight(),
- PIXEL_FORMAT_RGBA_8888, srcBuf->getUsage(),
- &res));
- if (blitBuffer == 0) {
- ST_LOGE("updateTexImage: SurfaceComposer::createGraphicBuffer failed");
- return NO_MEMORY;
- }
- if (res != NO_ERROR) {
- ST_LOGW("updateTexImage: SurfaceComposer::createGraphicBuffer error=%#04x", res);
- }
- mBlitSlots[mNextBlitSlot].mGraphicBuffer = blitBuffer;
-
- EGLDisplay dpy = eglGetCurrentDisplay();
- image = createImage(dpy, blitBuffer);
- mBlitSlots[mNextBlitSlot].mEglImage = image;
- mBlitSlots[mNextBlitSlot].mEglDisplay = dpy;
- }
-
- if (deferConversion) {
- graphicBuffer = mSlots[buf].mGraphicBuffer;
- mConversionSrcSlot = buf;
- mConversionBltSlot = mNextBlitSlot;
- // At this point graphicBuffer and image do not point
- // at matching buffers. This is intentional as this
- // surface might end up being taken care of by HWComposer,
- // which needs access to the original buffer.
- // GL however, is fed an EGLImage that is created from
- // a conversion buffer. It will have its
- // content updated once the surface is actually drawn
- // in Layer::onDraw()
- } else {
- if (convert(mSlots[buf].mGraphicBuffer,
- mBlitSlots[mNextBlitSlot].mGraphicBuffer) != OK) {
- LOGE("updateTexImage: convert failed");
- return UNKNOWN_ERROR;
- }
- graphicBuffer = mBlitSlots[mNextBlitSlot].mGraphicBuffer;
- }
- // mBlitSlots contains several buffers (NUM_BLIT_BUFFER_SLOTS),
- // advance (potentially wrap) the index
- mNextBlitSlot = (mNextBlitSlot + 1) % NUM_BLIT_BUFFER_SLOTS;
- } else {
- mNeedsConversion = false;
- image = mSlots[buf].mEglImage;
- graphicBuffer = mSlots[buf].mGraphicBuffer;
- if (image == EGL_NO_IMAGE_KHR) {
- EGLDisplay dpy = eglGetCurrentDisplay();
- if (graphicBuffer == 0) {
- ST_LOGE("buffer at slot %d is null", buf);
- return BAD_VALUE;
- }
- image = createImage(dpy, graphicBuffer);
- mSlots[buf].mEglImage = image;
- mSlots[buf].mEglDisplay = dpy;
- if (image == EGL_NO_IMAGE_KHR) {
- // NOTE: if dpy was invalid, createImage() is guaranteed to
- // fail. so we'd end up here.
- return -EINVAL;
- }
+ // NOTE: if dpy was invalid, createImage() is guaranteed to
+ // fail. so we'd end up here.
+ return -EINVAL;
}
}
@@ -929,7 +827,7 @@ status_t SurfaceTexture::updateTexImage(bool deferConversion) {
// Update the SurfaceTexture state.
mCurrentTexture = buf;
- mCurrentTextureBuf = graphicBuffer;
+ mCurrentTextureBuf = mSlots[buf].mGraphicBuffer;
mCurrentCrop = mSlots[buf].mCrop;
mCurrentTransform = mSlots[buf].mTransform;
mCurrentScalingMode = mSlots[buf].mScalingMode;
@@ -955,12 +853,8 @@ bool SurfaceTexture::isExternalFormat(uint32_t format)
case HAL_PIXEL_FORMAT_YV12:
// Legacy/deprecated YUV formats
case HAL_PIXEL_FORMAT_YCbCr_422_SP:
- case HAL_PIXEL_FORMAT_YCbCr_420_SP:
- case HAL_PIXEL_FORMAT_YCbCr_422_I:
- case HAL_PIXEL_FORMAT_YCrCb_422_SP:
- case HAL_PIXEL_FORMAT_YCrCb_422_P:
case HAL_PIXEL_FORMAT_YCrCb_420_SP:
- case HAL_PIXEL_FORMAT_YCrCb_420_P:
+ case HAL_PIXEL_FORMAT_YCbCr_422_I:
return true;
}
@@ -1102,14 +996,6 @@ void SurfaceTexture::freeAllBuffersLocked() {
for (int i = 0; i < NUM_BUFFER_SLOTS; i++) {
freeBufferLocked(i);
}
- for (int i = 0; i < NUM_BLIT_BUFFER_SLOTS; i++) {
- mBlitSlots[i].mGraphicBuffer = 0;
- if (mBlitSlots[i].mEglImage != EGL_NO_IMAGE_KHR) {
- eglDestroyImageKHR(mBlitSlots[i].mEglDisplay, mBlitSlots[i].mEglImage);
- mBlitSlots[i].mEglImage = EGL_NO_IMAGE_KHR;
- mBlitSlots[i].mEglDisplay = EGL_NO_DISPLAY;
- }
- }
}
void SurfaceTexture::freeAllBuffersExceptHeadLocked() {
@@ -1314,82 +1200,6 @@ void SurfaceTexture::dump(String8& result, const char* prefix,
}
}
-bool SurfaceTexture::conversionIsNeeded(const sp<GraphicBuffer>& graphicBuffer) {
- int fmt = graphicBuffer->getPixelFormat();
- return (fmt == PIXEL_FORMAT_YCBCR42XMBN) || (fmt == PIXEL_FORMAT_YCbCr_420_P);
-}
-
-status_t SurfaceTexture::convert() {
- if (!mNeedsConversion)
- return NO_ERROR;
-
- if (mConversionBltSlot < 0 ||
- mConversionBltSlot >= NUM_BLIT_BUFFER_SLOTS ||
- mConversionSrcSlot < 0 ||
- mConversionSrcSlot >= NUM_BUFFER_SLOTS) {
- LOGE_IF(STE_DEFERDBG, "%s: Incorrect setup for deferred "
- "texture conversion:\n"
- "mConversionSrcSlot=%d mConversionBltSlot=%d", __FUNCTION__,
- mConversionSrcSlot, mConversionBltSlot);
- return BAD_VALUE;
- }
-
- if (mSlots[mConversionSrcSlot].mGraphicBuffer == NULL) {
- LOGI_IF(STE_DEFERDBG, "%s: NULL source for deferred texture conversion.",
- __FUNCTION__);
- return OK;
- }
-
- if (mBlitSlots[mConversionBltSlot].mGraphicBuffer == NULL) {
- LOGI_IF(STE_DEFERDBG, "%s: NULL destination for deferred "
- "texture conversion.", __FUNCTION__);
- return OK;
- }
-
- return convert(mSlots[mConversionSrcSlot].mGraphicBuffer,
- mBlitSlots[mConversionBltSlot].mGraphicBuffer);
-}
-
-status_t SurfaceTexture::convert(sp<GraphicBuffer> &srcBuf, sp<GraphicBuffer> &dstBuf) {
- copybit_image_t dstImg;
- dstImg.w = dstBuf->getWidth();
- dstImg.h = dstBuf->getHeight();
- dstImg.format = dstBuf->getPixelFormat();
- dstImg.handle = (native_handle_t*) dstBuf->getNativeBuffer()->handle;
-
- copybit_image_t srcImg;
- srcImg.w = srcBuf->getWidth();
- srcImg.h = srcBuf->getHeight();
- srcImg.format = srcBuf->getPixelFormat();
- srcImg.base = NULL;
- srcImg.handle = (native_handle_t*) srcBuf->getNativeBuffer()->handle;
-
- copybit_rect_t dstCrop;
- dstCrop.l = 0;
- dstCrop.t = 0;
- dstCrop.r = dstBuf->getWidth();
- dstCrop.b = dstBuf->getHeight();
-
- copybit_rect_t srcCrop;
- srcCrop.l = 0;
- srcCrop.t = 0;
- srcCrop.r = srcBuf->getWidth();
- srcCrop.b = srcBuf->getHeight();
-
- region_iterator clip(Region(Rect(dstCrop.r, dstCrop.b)));
- mBlitEngine->set_parameter(mBlitEngine, COPYBIT_TRANSFORM, 0);
- mBlitEngine->set_parameter(mBlitEngine, COPYBIT_PLANE_ALPHA, 0xFF);
- mBlitEngine->set_parameter(mBlitEngine, COPYBIT_DITHER, COPYBIT_ENABLE);
-
- int err = mBlitEngine->stretch(
- mBlitEngine, &dstImg, &srcImg, &dstCrop, &srcCrop, &clip);
- if (err != 0) {
- LOGE("\nError: Blit stretch operation failed (err:%d)\n", err);
- return UNKNOWN_ERROR;
- }
- return OK;
-}
-
static void mtxMul(float out[16], const float a[16], const float b[16]) {
out[0] = a[0]*b[0] + a[4]*b[1] + a[8]*b[2] + a[12]*b[3];
out[1] = a[1]*b[0] + a[5]*b[1] + a[9]*b[2] + a[13]*b[3];
diff --git a/libs/ui/Android.mk b/libs/ui/Android.mk
index 90d401df1fac..fbabfc420cc5 100644
--- a/libs/ui/Android.mk
+++ b/libs/ui/Android.mk
@@ -40,10 +40,6 @@ include $(BUILD_HOST_STATIC_LIBRARY)
include $(CLEAR_VARS)
-ifeq ($(BOARD_HAVE_CODEC_SUPPORT),STERICSSON_CODEC_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_CODEC_SUPPORT
-endif
-
LOCAL_SRC_FILES:= \
$(commonSources) \
EGLUtils.cpp \
diff --git a/libs/ui/PixelFormat.cpp b/libs/ui/PixelFormat.cpp
index ec645dee621b..ee186c84de9c 100644
--- a/libs/ui/PixelFormat.cpp
+++ b/libs/ui/PixelFormat.cpp
@@ -59,21 +59,11 @@ status_t getPixelFormatInfo(PixelFormat format, PixelFormatInfo* info)
// YUV format from the HAL are handled here
switch (format) {
case HAL_PIXEL_FORMAT_YCbCr_422_SP:
- case HAL_PIXEL_FORMAT_YCrCb_422_SP:
- case HAL_PIXEL_FORMAT_YCbCr_422_P:
case HAL_PIXEL_FORMAT_YCbCr_422_I:
- case HAL_PIXEL_FORMAT_CbYCrY_422_I:
info->bitsPerPixel = 16;
goto done;
- case HAL_PIXEL_FORMAT_YCbCr_420_SP:
case HAL_PIXEL_FORMAT_YCrCb_420_SP:
case HAL_PIXEL_FORMAT_YV12:
- case HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED:
- case HAL_PIXEL_FORMAT_YCrCb_420_SP_TILED:
- case HAL_PIXEL_FORMAT_YCbCr_420_P:
- case HAL_PIXEL_FORMAT_YCbCr_420_I:
- case HAL_PIXEL_FORMAT_CbYCrY_420_I:
- case HAL_PIXEL_FORMAT_YCBCR42XMBN:
info->bitsPerPixel = 12;
done:
info->format = format;
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index b8ed9edb5bbf..8d71dcf644d0 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -808,8 +808,7 @@ public class MediaPlayer
}
/**
- * Sets the data source (file-path or http/rtsp URL) to use. To select FM Radio as the data
- * source, set the path to "fmradio://rx".
+ * Sets the data source (file-path or http/rtsp URL) to use.
*
* @param path the path of the file, or the http/rtsp URL of the stream you want to play
* @throws IllegalStateException if it is called in an invalid state
diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java
index c1f2f62c260b..08e603252c5c 100644
--- a/media/java/android/media/MediaRecorder.java
+++ b/media/java/android/media/MediaRecorder.java
@@ -168,8 +168,6 @@ public class MediaRecorder
* is applied.
*/
public static final int VOICE_COMMUNICATION = 7;
- /** FM Radio Rx audio source */
- public static final int FM_RADIO_RX = 8;
}
/**
diff --git a/media/libmedia/Android.mk b/media/libmedia/Android.mk
index 190f8c3844da..7af4a8753576 100644
--- a/media/libmedia/Android.mk
+++ b/media/libmedia/Android.mk
@@ -2,14 +2,6 @@ LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
-ifeq ($(BOARD_HAVE_CODEC_SUPPORT),STERICSSON_CODEC_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_CODEC_SUPPORT
-endif
-
-ifeq ($(BOARD_HAVE_FMRADIO_SUPPORT),STERICSSON_FMRADIO_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_FMRADIO_SUPPORT
-endif
-
LOCAL_SRC_FILES:= \
AudioParameter.cpp
LOCAL_MODULE:= libmedia_helper
@@ -19,14 +11,6 @@ include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
-ifeq ($(BOARD_HAVE_CODEC_SUPPORT),STERICSSON_CODEC_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_CODEC_SUPPORT
-endif
-
-ifeq ($(BOARD_HAVE_FMRADIO_SUPPORT),STERICSSON_FMRADIO_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_FMRADIO_SUPPORT
-endif
-
LOCAL_SRC_FILES:= \
AudioTrack.cpp \
IAudioFlinger.cpp \
diff --git a/media/libmedia/AudioSystem.cpp b/media/libmedia/AudioSystem.cpp
index 4ec0483850b0..7b14c183b68e 100644
--- a/media/libmedia/AudioSystem.cpp
+++ b/media/libmedia/AudioSystem.cpp
@@ -44,6 +44,7 @@ int AudioSystem::gPrevInFormat = AUDIO_FORMAT_PCM_16_BIT;
int AudioSystem::gPrevInChannelCount = 1;
size_t AudioSystem::gInBuffSize = 0;
+
// establish binder interface to AudioFlinger service
const sp<IAudioFlinger>& AudioSystem::get_audio_flinger()
{
@@ -625,12 +626,11 @@ audio_io_handle_t AudioSystem::getInput(int inputSource,
uint32_t format,
uint32_t channels,
audio_in_acoustics_t acoustics,
- int sessionId,
- audio_input_clients *inputClientId)
+ int sessionId)
{
const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
if (aps == 0) return 0;
- return aps->getInput(inputSource, samplingRate, format, channels, acoustics, sessionId, inputClientId);
+ return aps->getInput(inputSource, samplingRate, format, channels, acoustics, sessionId);
}
status_t AudioSystem::startInput(audio_io_handle_t input)
diff --git a/media/libmedia/IAudioFlinger.cpp b/media/libmedia/IAudioFlinger.cpp
index 1d1b72238acb..d58834b81684 100644
--- a/media/libmedia/IAudioFlinger.cpp
+++ b/media/libmedia/IAudioFlinger.cpp
@@ -69,8 +69,7 @@ enum {
QUERY_EFFECT,
GET_EFFECT_DESCRIPTOR,
CREATE_EFFECT,
- MOVE_EFFECTS,
- READ_INPUT
+ MOVE_EFFECTS
};
class BpAudioFlinger : public BpInterface<IAudioFlinger>
@@ -433,8 +432,7 @@ public:
uint32_t *pSamplingRate,
uint32_t *pFormat,
uint32_t *pChannels,
- uint32_t acoustics,
- uint32_t *pInputClientId)
+ uint32_t acoustics)
{
Parcel data, reply;
uint32_t devices = pDevices ? *pDevices : 0;
@@ -448,7 +446,6 @@ public:
data.writeInt32(format);
data.writeInt32(channels);
data.writeInt32(acoustics);
- data.writeIntPtr((intptr_t)pInputClientId);
remote()->transact(OPEN_INPUT, data, &reply);
int input = reply.readInt32();
devices = reply.readInt32();
@@ -462,12 +459,11 @@ public:
return input;
}
- virtual status_t closeInput(int input, uint32_t *inputClientId)
+ virtual status_t closeInput(int input)
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
data.writeInt32(input);
- data.writeIntPtr((intptr_t) inputClientId);
remote()->transact(CLOSE_INPUT, data, &reply);
return reply.readInt32();
}
@@ -520,20 +516,6 @@ public:
return reply.readInt32();
}
- virtual size_t readInput(uint32_t *input, uint32_t inputClientId, void *buffer, uint32_t bytes, uint32_t *pOverwrittenBytes)
- {
- Parcel data, reply;
- data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
- data.writeIntPtr((intptr_t) input);
- data.writeInt32(inputClientId);
- data.writeIntPtr((intptr_t) buffer);
- data.writeInt32(bytes);
- data.writeIntPtr((intptr_t) pOverwrittenBytes);
- remote()->transact(READ_INPUT, data, &reply);
-
- return reply.readInt32();
- }
-
virtual int newAudioSessionId()
{
Parcel data, reply;
@@ -900,14 +882,12 @@ status_t BnAudioFlinger::onTransact(
uint32_t format = data.readInt32();
uint32_t channels = data.readInt32();
uint32_t acoutics = data.readInt32();
- uint32_t *inputClientId = (uint32_t*) data.readIntPtr();
int input = openInput(&devices,
&samplingRate,
&format,
&channels,
- acoutics,
- inputClientId);
+ acoutics);
reply->writeInt32(input);
reply->writeInt32(devices);
reply->writeInt32(samplingRate);
@@ -917,9 +897,7 @@ status_t BnAudioFlinger::onTransact(
} break;
case CLOSE_INPUT: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
- uint32_t input = data.readInt32();
- uint32_t *inputClientId = (uint32_t*) data.readIntPtr();
- reply->writeInt32(closeInput(input, inputClientId));
+ reply->writeInt32(closeInput(data.readInt32()));
return NO_ERROR;
} break;
case SET_STREAM_OUTPUT: {
@@ -1032,16 +1010,6 @@ status_t BnAudioFlinger::onTransact(
reply->writeInt32(moveEffects(session, srcOutput, dstOutput));
return NO_ERROR;
} break;
- case READ_INPUT: {
- CHECK_INTERFACE(IAudioFlinger, data, reply);
- uint32_t* input = (uint32_t*) data.readIntPtr();
- uint32_t inputClientId = data.readInt32();
- void* buffer = (void*) data.readIntPtr();
- uint32_t bytes = data.readInt32();
- uint32_t *pOverwrittenBytes = (uint32_t*) data.readIntPtr();
- reply->writeInt32(readInput(input, inputClientId, buffer, bytes, pOverwrittenBytes));
- return NO_ERROR;
- } break;
default:
return BBinder::onTransact(code, data, reply, flags);
}
diff --git a/media/libmedia/IAudioPolicyService.cpp b/media/libmedia/IAudioPolicyService.cpp
index 7dc9e566e586..50b4855a8e8d 100644
--- a/media/libmedia/IAudioPolicyService.cpp
+++ b/media/libmedia/IAudioPolicyService.cpp
@@ -187,8 +187,7 @@ public:
uint32_t format,
uint32_t channels,
audio_in_acoustics_t acoustics,
- int audioSession,
- audio_input_clients *inputClientId)
+ int audioSession)
{
Parcel data, reply;
data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
@@ -197,7 +196,6 @@ public:
data.writeInt32(static_cast <uint32_t>(format));
data.writeInt32(channels);
data.writeInt32(static_cast <uint32_t>(acoustics));
- data.writeIntPtr((intptr_t)inputClientId);
data.writeInt32(audioSession);
remote()->transact(GET_INPUT, data, &reply);
return static_cast <audio_io_handle_t> (reply.readInt32());
@@ -480,16 +478,13 @@ status_t BnAudioPolicyService::onTransact(
uint32_t channels = data.readInt32();
audio_in_acoustics_t acoustics =
static_cast <audio_in_acoustics_t>(data.readInt32());
- audio_input_clients *inputClientId =
- (audio_input_clients*) data.readIntPtr();
int audioSession = data.readInt32();
audio_io_handle_t input = getInput(inputSource,
samplingRate,
format,
channels,
acoustics,
- audioSession,
- inputClientId);
+ audioSession);
reply->writeInt32(static_cast <int>(input));
return NO_ERROR;
} break;
diff --git a/media/libmediaplayerservice/Android.mk b/media/libmediaplayerservice/Android.mk
index ec89f6fabe0d..a3e2517b37d2 100644
--- a/media/libmediaplayerservice/Android.mk
+++ b/media/libmediaplayerservice/Android.mk
@@ -6,10 +6,6 @@ LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
-ifeq ($(BOARD_HAVE_CODEC_SUPPORT),STERICSSON_CODEC_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_CODEC_SUPPORT
-endif
-
LOCAL_SRC_FILES:= \
MediaRecorderClient.cpp \
MediaPlayerService.cpp \
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index 736e7eed5b85..011c0b972583 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -1503,7 +1503,7 @@ void MediaPlayerService::AudioOutput::CallbackWrapper(
AudioTrack::Buffer *buffer = (AudioTrack::Buffer *)info;
size_t actualSize = (*me->mCallback)(
- me, buffer->raw, buffer->size, me->mCallbackCookie);
+ me, buffer->raw, buffer->size, me->mCallbackCookie);
if (actualSize == 0 && buffer->size > 0) {
// We've reached EOS but the audio track is not stopped yet,
diff --git a/media/libmediaplayerservice/MediaPlayerService.h b/media/libmediaplayerservice/MediaPlayerService.h
index fc46eab07c89..b04fddb59a8b 100644
--- a/media/libmediaplayerservice/MediaPlayerService.h
+++ b/media/libmediaplayerservice/MediaPlayerService.h
@@ -85,6 +85,7 @@ class MediaPlayerService : public BnMediaPlayerService
uint32_t sampleRate, int channelCount,
int format, int bufferCount,
AudioCallback cb, void *cookie);
+
virtual void start();
virtual ssize_t write(const void* buffer, size_t size);
virtual void stop();
diff --git a/media/libstagefright/Android.mk b/media/libstagefright/Android.mk
index ff45d48a547e..e57878575b76 100644
--- a/media/libstagefright/Android.mk
+++ b/media/libstagefright/Android.mk
@@ -6,11 +6,6 @@ include frameworks/base/media/libstagefright/codecs/common/Config.mk
ifeq ($(BOARD_HAVE_CODEC_SUPPORT),SAMSUNG_CODEC_SUPPORT)
LOCAL_CFLAGS += -DSAMSUNG_CODEC_SUPPORT
endif
-
-ifeq ($(BOARD_HAVE_CODEC_SUPPORT),STERICSSON_CODEC_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_CODEC_SUPPORT
-endif
-
LOCAL_SRC_FILES:= \
ACodec.cpp \
AACExtractor.cpp \
@@ -45,7 +40,6 @@ LOCAL_SRC_FILES:= \
OMXClient.cpp \
OMXCodec.cpp \
OggExtractor.cpp \
- PCMExtractor.cpp \
SampleIterator.cpp \
SampleTable.cpp \
StagefrightMediaScanner.cpp \
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index 1b4f79f89d69..bc45f83d3d96 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -40,7 +40,6 @@
#include <media/stagefright/AudioPlayer.h>
#include <media/stagefright/DataSource.h>
#include <media/stagefright/FileSource.h>
-#include <media/stagefright/FMRadioDataSource.h>
#include <media/stagefright/MediaBuffer.h>
#include <media/stagefright/MediaDefs.h>
#include <media/stagefright/MediaExtractor.h>
@@ -1944,7 +1943,6 @@ status_t AwesomePlayer::prepareAsync_l() {
status_t AwesomePlayer::finishSetDataSource_l() {
sp<DataSource> dataSource;
- char *mime = NULL;
bool isWidevineStreaming = false;
if (!strncasecmp("widevine://", mUri.string(), 11)) {
isWidevineStreaming = true;
@@ -2083,15 +2081,6 @@ status_t AwesomePlayer::finishSetDataSource_l() {
return UNKNOWN_ERROR;
}
}
- } else if (!strncasecmp("fmradio://rx", mUri.string(), 12)) {
-
- mime = (char*) MEDIA_MIMETYPE_AUDIO_RAW;
- // HACK: Removed the line below since it causes problems. Add it back if you want FM-Radio.
- //dataSource = new FMRadioDataSource();
- status_t err = dataSource->initCheck();
- if (err != OK) {
- return err;
- }
} else {
dataSource = DataSource::CreateFromURI(mUri.string(), &mUriHeaders);
}
@@ -2118,7 +2107,8 @@ status_t AwesomePlayer::finishSetDataSource_l() {
mWVMExtractor->setAdaptiveStreamingMode(true);
extractor = mWVMExtractor;
} else {
- extractor = MediaExtractor::Create(dataSource, mime);
+ extractor = MediaExtractor::Create(
+ dataSource, sniffedMIME.empty() ? NULL : sniffedMIME.c_str());
if (extractor == NULL) {
return UNKNOWN_ERROR;
diff --git a/media/libstagefright/CameraSource.cpp b/media/libstagefright/CameraSource.cpp
index 11502ebf2994..57989c5e4a4a 100644..100755
--- a/media/libstagefright/CameraSource.cpp
+++ b/media/libstagefright/CameraSource.cpp
@@ -111,10 +111,6 @@ static int32_t getColorFormat(const char* colorFormat) {
return OMX_TI_COLOR_FormatYUV420PackedSemiPlanar;
}
- if (!strcmp(colorFormat, CameraParameters::PIXEL_FORMAT_YUV420MB)) {
- return OMX_STE_COLOR_FormatYUV420PackedSemiPlanarMB;
- }
-
LOGE("Uknown color format (%s), please add it to "
"CameraSource::getColorFormat", colorFormat);
@@ -539,16 +535,13 @@ status_t CameraSource::initWithCameraAccess(
// XXX: query camera for the stride and slice height
// when the capability becomes available.
- int stride = newCameraParams.getInt(CameraParameters::KEY_RECORD_STRIDE);
- int sliceHeight = newCameraParams.getInt(CameraParameters::KEY_RECORD_SLICE_HEIGHT);
-
mMeta = new MetaData;
mMeta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_VIDEO_RAW);
mMeta->setInt32(kKeyColorFormat, mColorFormat);
mMeta->setInt32(kKeyWidth, mVideoSize.width);
mMeta->setInt32(kKeyHeight, mVideoSize.height);
- mMeta->setInt32(kKeyStride, stride != -1 ? stride : mVideoSize.width);
- mMeta->setInt32(kKeySliceHeight, sliceHeight != -1 ? sliceHeight : mVideoSize.height);
+ mMeta->setInt32(kKeyStride, mVideoSize.width);
+ mMeta->setInt32(kKeySliceHeight, mVideoSize.height);
mMeta->setInt32(kKeyFrameRate, mVideoFrameRate);
return OK;
}
diff --git a/media/libstagefright/DataSource.cpp b/media/libstagefright/DataSource.cpp
index 8f8257136b6d..43539bb8d2ac 100644
--- a/media/libstagefright/DataSource.cpp
+++ b/media/libstagefright/DataSource.cpp
@@ -20,7 +20,6 @@
#include "include/WAVExtractor.h"
#include "include/OggExtractor.h"
#include "include/MPEG2PSExtractor.h"
-#include "include/PCMExtractor.h"
#include "include/MPEG2TSExtractor.h"
#include "include/NuCachedSource2.h"
#include "include/HTTPBase.h"
@@ -33,7 +32,6 @@
#include <media/stagefright/foundation/AMessage.h>
#include <media/stagefright/DataSource.h>
#include <media/stagefright/FileSource.h>
-#include <media/stagefright/FMRadioDataSource.h>
#include <media/stagefright/MediaErrors.h>
#include <utils/String8.h>
diff --git a/media/libstagefright/FMRadioDataSource.cpp b/media/libstagefright/FMRadioDataSource.cpp
deleted file mode 100644
index 09780f26e6e8..000000000000
--- a/media/libstagefright/FMRadioDataSource.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- * Copyright (C) 2010 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.
- *
- * Author: Andreas Gustafsson (andreas.a.gustafsson@stericsson.com)
- * for ST-Ericsson
- */
-
-#define LOG_TAG "FMRadioDataSource"
-#include <utils/Log.h>
-
-#include <media/stagefright/FMRadioDataSource.h>
-#include <media/stagefright/MediaDebug.h>
-#include <media/AudioSystem.h>
-#include <media/IAudioPolicyService.h>
-#include <binder/IServiceManager.h>
-#include <media/AudioSystem.h>
-#include <media/mediarecorder.h>
-#include <media/IAudioFlinger.h>
-#include <system/audio.h>
-
-
-namespace android {
-
-FMRadioDataSource::FMRadioDataSource() {
-
- mFormat = android_audio_legacy::AudioSystem::PCM_16_BIT;
- mChannels = android_audio_legacy::AudioSystem::CHANNEL_IN_STEREO;
- mSampleRate = 48000;
- mFlags = 0;
- mOverwrittenBytes = 0;
- mInputClientId = AUDIO_INPUT_CLIENT_PLAYBACK;
- int inputSource = AUDIO_SOURCE_FM_RADIO_RX;
-
- mStream = (android_audio_legacy::AudioStreamIn*) AudioSystem::getInput(inputSource,mSampleRate, mFormat, mChannels,
- (audio_in_acoustics_t)mFlags,0,&mInputClientId);
- if (mStream != NULL) {
- AudioSystem::startInput((audio_io_handle_t) mStream);
- }
-}
-
-FMRadioDataSource::~FMRadioDataSource() {
-
- if (mStream != NULL) {
- AudioSystem::stopInput((audio_io_handle_t) mStream);
- AudioSystem::releaseInput((audio_io_handle_t) mStream);
- }
-}
-
-status_t FMRadioDataSource::initCheck() const {
- return mStream != NULL ? OK : NO_INIT;
-}
-
-ssize_t FMRadioDataSource::readAt(off64_t offset, void *data, size_t size) {
- if(mStream != NULL) {
- const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
- return af->readInput((uint32_t*)mStream, mInputClientId, data, size, &mOverwrittenBytes);
- }
- return 0;
-}
-
-status_t FMRadioDataSource::getSize(off64_t *size) {
- *size = 0;
- return OK;
-}
-
-uint32_t FMRadioDataSource::getBufferSize() {
- return mStream->bufferSize();
-}
-
-uint32_t FMRadioDataSource::getNumChannels() {
- return android_audio_legacy::AudioSystem::popCount(mChannels);
-}
-
-uint32_t FMRadioDataSource::getSampleRate() {
- return mSampleRate;
-}
-
-uint32_t FMRadioDataSource::getFormat() {
- if (mFormat == android_audio_legacy::AudioSystem::PCM_16_BIT) {
- return 16;
- } else if (mFormat == android_audio_legacy::AudioSystem::PCM_8_BIT) {
- return 8;
- }
- return 0;
-}
-
-} // namespace android
diff --git a/media/libstagefright/MPEG4Writer.cpp b/media/libstagefright/MPEG4Writer.cpp
index 46d87df66889..46d87df66889 100644..100755
--- a/media/libstagefright/MPEG4Writer.cpp
+++ b/media/libstagefright/MPEG4Writer.cpp
diff --git a/media/libstagefright/MediaDefs.cpp b/media/libstagefright/MediaDefs.cpp
index 43e305c8c62f..444e823295a3 100644
--- a/media/libstagefright/MediaDefs.cpp
+++ b/media/libstagefright/MediaDefs.cpp
@@ -24,10 +24,8 @@ const char *MEDIA_MIMETYPE_VIDEO_VPX = "video/x-vnd.on2.vp8";
const char *MEDIA_MIMETYPE_VIDEO_AVC = "video/avc";
const char *MEDIA_MIMETYPE_VIDEO_MPEG4 = "video/mp4v-es";
const char *MEDIA_MIMETYPE_VIDEO_H263 = "video/3gpp";
-const char *MEDIA_MIMETYPE_VIDEO_H263_SW = "video/3gpp-sw";
const char *MEDIA_MIMETYPE_VIDEO_MPEG2 = "video/mpeg2";
const char *MEDIA_MIMETYPE_VIDEO_RAW = "video/raw";
-const char *MEDIA_MIMETYPE_VIDEO_VC1 = "video/vc1";
const char *MEDIA_MIMETYPE_AUDIO_AMR_NB = "audio/3gpp";
const char *MEDIA_MIMETYPE_AUDIO_AMR_WB = "audio/amr-wb";
diff --git a/media/libstagefright/MediaExtractor.cpp b/media/libstagefright/MediaExtractor.cpp
index 93fe491e2083..374ecf703613 100644
--- a/media/libstagefright/MediaExtractor.cpp
+++ b/media/libstagefright/MediaExtractor.cpp
@@ -24,7 +24,6 @@
#include "include/WAVExtractor.h"
#include "include/OggExtractor.h"
#include "include/MPEG2PSExtractor.h"
-#include "include/PCMExtractor.h"
#include "include/MPEG2TSExtractor.h"
#include "include/DRMExtractor.h"
#include "include/WVMExtractor.h"
@@ -116,8 +115,6 @@ sp<MediaExtractor> MediaExtractor::Create(
ret = new AACExtractor(source);
} else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_MPEG2PS)) {
ret = new MPEG2PSExtractor(source);
- } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_RAW)) {
- ret = new PCMExtractor(source);
}
if (ret != NULL) {
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index 33e85a9a06ff..c080b6c31f2a 100644..100755
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -117,7 +117,6 @@ static sp<MediaSource> InstantiateSoftwareEncoder(
static const CodecInfo kDecoderInfo[] = {
{ MEDIA_MIMETYPE_IMAGE_JPEG, "OMX.TI.JPEG.decode" },
- { MEDIA_MIMETYPE_AUDIO_MPEG, "OMX.ST.mp3.decoder" },
// { MEDIA_MIMETYPE_AUDIO_MPEG, "OMX.TI.MP3.decode" },
{ MEDIA_MIMETYPE_AUDIO_MPEG, "OMX.google.mp3.decoder" },
{ MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_II, "OMX.Nvidia.mp2.decoder" },
@@ -127,13 +126,11 @@ static const CodecInfo kDecoderInfo[] = {
// { MEDIA_MIMETYPE_AUDIO_AMR_NB, "OMX.Nvidia.amrwb.decoder" },
{ MEDIA_MIMETYPE_AUDIO_AMR_WB, "OMX.TI.WBAMR.decode" },
{ MEDIA_MIMETYPE_AUDIO_AMR_WB, "OMX.google.amrwb.decoder" },
- { MEDIA_MIMETYPE_AUDIO_AAC, "OMX.ST.aac.decoder" },
// { MEDIA_MIMETYPE_AUDIO_AAC, "OMX.Nvidia.aac.decoder" },
{ MEDIA_MIMETYPE_AUDIO_AAC, "OMX.TI.AAC.decode" },
{ MEDIA_MIMETYPE_AUDIO_AAC, "OMX.google.aac.decoder" },
{ MEDIA_MIMETYPE_AUDIO_G711_ALAW, "OMX.google.g711.alaw.decoder" },
{ MEDIA_MIMETYPE_AUDIO_G711_MLAW, "OMX.google.g711.mlaw.decoder" },
- { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.ST.VFM.MPEG4Dec" },
{ MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.TI.DUCATI1.VIDEO.DECODER" },
{ MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.Nvidia.mp4.decode" },
{ MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.qcom.7x30.video.decoder.mpeg4" },
@@ -141,15 +138,12 @@ static const CodecInfo kDecoderInfo[] = {
{ MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.TI.Video.Decoder" },
{ MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.SEC.MPEG4.Decoder" },
{ MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.google.mpeg4.decoder" },
- { MEDIA_MIMETYPE_VIDEO_H263, "OMX.ST.VFM.MPEG4Dec" },
{ MEDIA_MIMETYPE_VIDEO_H263, "OMX.TI.DUCATI1.VIDEO.DECODER" },
{ MEDIA_MIMETYPE_VIDEO_H263, "OMX.Nvidia.h263.decode" },
{ MEDIA_MIMETYPE_VIDEO_H263, "OMX.qcom.7x30.video.decoder.h263" },
{ MEDIA_MIMETYPE_VIDEO_H263, "OMX.qcom.video.decoder.h263" },
{ MEDIA_MIMETYPE_VIDEO_H263, "OMX.SEC.H263.Decoder" },
{ MEDIA_MIMETYPE_VIDEO_H263, "OMX.google.h263.decoder" },
- { MEDIA_MIMETYPE_VIDEO_H263_SW, "OMX.ST.VFM.MPEG4HostDec" },
- { MEDIA_MIMETYPE_VIDEO_AVC, "OMX.ST.VFM.H264Dec" },
{ MEDIA_MIMETYPE_VIDEO_AVC, "OMX.TI.DUCATI1.VIDEO.DECODER" },
{ MEDIA_MIMETYPE_VIDEO_AVC, "OMX.Nvidia.h264.decode" },
{ MEDIA_MIMETYPE_VIDEO_AVC, "OMX.qcom.7x30.video.decoder.avc" },
@@ -161,7 +155,6 @@ static const CodecInfo kDecoderInfo[] = {
{ MEDIA_MIMETYPE_AUDIO_VORBIS, "OMX.google.vorbis.decoder" },
{ MEDIA_MIMETYPE_VIDEO_VPX, "OMX.google.vpx.decoder" },
{ MEDIA_MIMETYPE_VIDEO_MPEG2, "OMX.Nvidia.mpeg2v.decode" },
- { MEDIA_MIMETYPE_VIDEO_VC1, "OMX.ST.VFM.VC1Dec" },
};
static const CodecInfo kEncoderInfo[] = {
@@ -171,7 +164,6 @@ static const CodecInfo kEncoderInfo[] = {
{ MEDIA_MIMETYPE_AUDIO_AMR_WB, "AMRWBEncoder" },
{ MEDIA_MIMETYPE_AUDIO_AAC, "OMX.TI.AAC.encode" },
{ MEDIA_MIMETYPE_AUDIO_AAC, "AACEncoder" },
- { MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.ST.VFM.MPEG4Enc" },
{ MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.TI.DUCATI1.VIDEO.MPEG4E" },
{ MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.qcom.7x30.video.encoder.mpeg4" },
{ MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.qcom.video.encoder.mpeg4" },
@@ -179,7 +171,6 @@ static const CodecInfo kEncoderInfo[] = {
{ MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.Nvidia.mp4.encoder" },
{ MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.SEC.MPEG4.Encoder" },
{ MEDIA_MIMETYPE_VIDEO_MPEG4, "M4vH263Encoder" },
- { MEDIA_MIMETYPE_VIDEO_H263, "OMX.ST.VFM.MPEG4Enc" },
{ MEDIA_MIMETYPE_VIDEO_H263, "OMX.TI.DUCATI1.VIDEO.MPEG4E" },
{ MEDIA_MIMETYPE_VIDEO_H263, "OMX.qcom.7x30.video.encoder.h263" },
{ MEDIA_MIMETYPE_VIDEO_H263, "OMX.qcom.video.encoder.h263" },
@@ -187,7 +178,6 @@ static const CodecInfo kEncoderInfo[] = {
{ MEDIA_MIMETYPE_VIDEO_H263, "OMX.Nvidia.h263.encoder" },
{ MEDIA_MIMETYPE_VIDEO_H263, "OMX.SEC.H263.Encoder" },
{ MEDIA_MIMETYPE_VIDEO_H263, "M4vH263Encoder" },
- { MEDIA_MIMETYPE_VIDEO_AVC, "OMX.ST.VFM.H264Enc" },
{ MEDIA_MIMETYPE_VIDEO_AVC, "OMX.TI.DUCATI1.VIDEO.H264E" },
{ MEDIA_MIMETYPE_VIDEO_AVC, "OMX.qcom.7x30.video.encoder.avc" },
{ MEDIA_MIMETYPE_VIDEO_AVC, "OMX.qcom.video.encoder.avc" },
@@ -302,18 +292,6 @@ static int CompareSoftwareCodecsFirst(
return 0;
}
-static uint32_t OmxToHALFormat(OMX_COLOR_FORMATTYPE omxValue) {
- switch (omxValue) {
- case OMX_STE_COLOR_FormatYUV420PackedSemiPlanarMB:
- return HAL_PIXEL_FORMAT_YCBCR42XMBN;
- case OMX_COLOR_FormatYUV420Planar:
- return HAL_PIXEL_FORMAT_YCbCr_420_P;
- default:
- LOGI("Unknown OMX pixel format (0x%X), passing it on unchanged", omxValue);
- return omxValue;
- }
-}
-
// static
uint32_t OMXCodec::getComponentQuirks(
const char *componentName, bool isEncoder) {
@@ -398,17 +376,6 @@ uint32_t OMXCodec::getComponentQuirks(
quirks |= kOutputBuffersAreUnreadable;
}
- if (!isEncoder && !strncmp(componentName, "OMX.ST.VFM.", 11)) {
- quirks |= kRequiresAllocateBufferOnInputPorts;
- quirks |= kRequiresAllocateBufferOnOutputPorts;
- }
-
- if (!strncmp(componentName, "OMX.ST.VFM.MPEG4Enc", 19) ||
- !strncmp(componentName, "OMX.ST.VFM.H264Enc", 18)) {
- quirks |= kRequiresAllocateBufferOnOutputPorts;
- quirks |= kRequiresStoreMetaDataBeforeIdle;
- }
-
return quirks;
}
@@ -934,7 +901,6 @@ static size_t getFrameSize(
case OMX_COLOR_FormatYUV420Planar:
case OMX_COLOR_FormatYUV420SemiPlanar:
case OMX_TI_COLOR_FormatYUV420PackedSemiPlanar:
- case OMX_STE_COLOR_FormatYUV420PackedSemiPlanarMB:
/*
* FIXME: For the Opaque color format, the frame size does not
* need to be (w*h*3)/2. It just needs to
@@ -1466,7 +1432,7 @@ status_t OMXCodec::setVideoOutputFormat(
|| format.eColorFormat == OMX_COLOR_FormatYUV420SemiPlanar
|| format.eColorFormat == OMX_COLOR_FormatCbYCrY
|| format.eColorFormat == OMX_TI_COLOR_FormatYUV420PackedSemiPlanar
- || format.eColorFormat == OMX_STE_COLOR_FormatYUV420PackedSemiPlanarMB
+ || format.eColorFormat == OMX_QCOM_COLOR_FormatYVU420SemiPlanar
#ifdef SAMSUNG_CODEC_SUPPORT
|| format.eColorFormat == OMX_SEC_COLOR_FormatNV12TPhysicalAddress
|| format.eColorFormat == OMX_SEC_COLOR_FormatNV12Tiled
@@ -1624,8 +1590,6 @@ void OMXCodec::setComponentRole(
"video_decoder.mpeg4", "video_encoder.mpeg4" },
{ MEDIA_MIMETYPE_VIDEO_H263,
"video_decoder.h263", "video_encoder.h263" },
- { MEDIA_MIMETYPE_VIDEO_VC1,
- "video_decoder.vc1", "video_encoder.vc1" },
};
static const size_t kNumMimeToRole =
@@ -1695,15 +1659,6 @@ status_t OMXCodec::init() {
CHECK_EQ((int)mState, (int)LOADED);
status_t err;
- if ((mQuirks & kRequiresStoreMetaDataBeforeIdle)
- && (mFlags & kStoreMetaDataInVideoBuffers)) {
- err = mOMX->storeMetaDataInBuffers(mNode, kPortIndexInput, OMX_TRUE);
- if (err != OK) {
- LOGE("Storing meta data in video buffers is not supported");
- return err;
- }
- }
-
if (!(mQuirks & kRequiresLoadedToIdleAfterAllocation)) {
err = mOMX->sendCommand(mNode, OMX_CommandStateSet, OMX_StateIdle);
CHECK_EQ(err, (status_t)OK);
@@ -1759,8 +1714,7 @@ status_t OMXCodec::allocateBuffersOnPort(OMX_U32 portIndex) {
}
status_t err = OK;
- if (!(mQuirks & kRequiresStoreMetaDataBeforeIdle)
- && (mFlags & kStoreMetaDataInVideoBuffers)
+ if ((mFlags & kStoreMetaDataInVideoBuffers)
&& portIndex == kPortIndexInput) {
err = mOMX->storeMetaDataInBuffers(mNode, kPortIndexInput, OMX_TRUE);
if (err != OK) {
@@ -1937,8 +1891,8 @@ status_t OMXCodec::allocateOutputBuffersFromNativeWindow() {
mNativeWindow.get(),
def.format.video.nFrameWidth,
def.format.video.nFrameHeight,
- OmxToHALFormat(def.format.video.eColorFormat));
-#else /* SAMSUNG_CODEC_SUPPORT */
+ def.format.video.eColorFormat);
+#else
OMX_COLOR_FORMATTYPE eColorFormat;
switch (def.format.video.eColorFormat) {
@@ -4318,7 +4272,6 @@ static const char *videoCompressionFormatString(OMX_VIDEO_CODINGTYPE type) {
"OMX_VIDEO_CodingRV",
"OMX_VIDEO_CodingAVC",
"OMX_VIDEO_CodingMJPEG",
- "OMX_VIDEO_CodingVC1",
};
size_t numNames = sizeof(kNames) / sizeof(kNames[0]);
diff --git a/media/libstagefright/PCMExtractor.cpp b/media/libstagefright/PCMExtractor.cpp
deleted file mode 100644
index d85af33e63f7..000000000000
--- a/media/libstagefright/PCMExtractor.cpp
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- * Copyright (C) 2010 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.
- *
- * Author: Andreas Gustafsson (andreas.a.gustafsson@stericsson.com)
- * for ST-Ericsson
- */
-
-//#define LOG_NDEBUG 0
-#define LOG_TAG "PCMExtractor"
-#include <utils/Log.h>
-
-#include "include/PCMExtractor.h"
-
-#include <media/stagefright/DataSource.h>
-#include <media/stagefright/MediaBufferGroup.h>
-#include <media/stagefright/MediaDebug.h>
-#include <media/stagefright/MediaDefs.h>
-#include <media/stagefright/MediaErrors.h>
-#include <media/stagefright/MetaData.h>
-#include <utils/String8.h>
-
-namespace android {
-
-static const uint16_t kDefaultNumChannels = 2;
-static const uint32_t kDefaultSampleRate = 48000;
-static const uint16_t kDefaultFormat = 16;
-
-struct PCMSource : public MediaSource {
- PCMSource(
- const sp<DataSource> &dataSource,
- const sp<MetaData> &meta,
- int32_t bitsPerSample,
- off_t offset, size_t size);
-
- virtual status_t start(MetaData *params = NULL);
- virtual status_t stop();
- virtual sp<MetaData> getFormat();
-
- virtual status_t read(
- MediaBuffer **buffer, const ReadOptions *options = NULL);
-
-protected:
- virtual ~PCMSource();
-
-private:
- static const size_t kMaxFrameSize;
-
- sp<DataSource> mDataSource;
- sp<MetaData> mMeta;
- int32_t mSampleRate;
- int32_t mNumChannels;
- int32_t mBitsPerSample;
- off_t mOffset;
- size_t mSize;
- bool mStarted;
- MediaBufferGroup *mGroup;
- off_t mCurrentPos;
- uint32_t mBufferSize;
-
- PCMSource(const PCMSource &);
- PCMSource &operator=(const PCMSource &);
-};
-
-PCMExtractor::PCMExtractor(const sp<DataSource> &source)
- : mDataSource(source),
- mValidFormat(false) {
- mInitCheck = init();
-}
-
-PCMExtractor::~PCMExtractor() {
-}
-
-sp<MetaData> PCMExtractor::getMetaData() {
- sp<MetaData> meta = new MetaData;
-
- if (mInitCheck != OK) {
- return meta;
- }
-
- meta->setCString(kKeyMIMEType, "audio/raw");
-
- return meta;
-}
-
-size_t PCMExtractor::countTracks() {
- return mInitCheck == OK ? 1 : 0;
-}
-
-sp<MediaSource> PCMExtractor::getTrack(size_t index) {
- if (mInitCheck != OK || index > 0) {
- return NULL;
- }
-
- return new PCMSource(
- mDataSource, mTrackMeta,
- mBitsPerSample, mDataOffset, mDataSize);
-}
-
-sp<MetaData> PCMExtractor::getTrackMetaData(
- size_t index, uint32_t flags) {
- if (mInitCheck != OK || index > 0) {
- return NULL;
- }
-
- return mTrackMeta;
-}
-
-status_t PCMExtractor::init() {
- mNumChannels = kDefaultNumChannels;
- mSampleRate = kDefaultSampleRate;
- mBitsPerSample = kDefaultFormat;
- mDataOffset = 0;
- mDataSize = 0;
- mValidFormat = true;
- mTrackMeta = new MetaData;mTrackMeta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_RAW);
- mTrackMeta->setInt32(kKeyChannelCount, mNumChannels);
- mTrackMeta->setInt32(kKeySampleRate, mSampleRate);
- return OK;
-}
-
-const size_t PCMSource::kMaxFrameSize = 4800;
-
-PCMSource::PCMSource(
- const sp<DataSource> &dataSource,
- const sp<MetaData> &meta,
- int32_t bitsPerSample,
- off_t offset, size_t size)
- : mDataSource(dataSource),
- mMeta(meta),
- mSampleRate(0),
- mNumChannels(0),
- mBitsPerSample(bitsPerSample),
- mOffset(offset),
- mSize(size),
- mStarted(false),
- mGroup(NULL),
- mBufferSize(0) {
- CHECK(mMeta->findInt32(kKeySampleRate, &mSampleRate));
- CHECK(mMeta->findInt32(kKeyChannelCount, &mNumChannels));
-}
-
-PCMSource::~PCMSource() {
- if (mStarted) {
- stop();
- }
-}
-
-status_t PCMSource::start(MetaData *params) {
- CHECK(!mStarted);
-
- mBufferSize = kMaxFrameSize;
- mGroup = new MediaBufferGroup;
- mGroup->add_buffer(new MediaBuffer(mBufferSize));
-
- if (mBitsPerSample == 8) {
- // As a temporary buffer for 8->16 bit conversion.
- mGroup->add_buffer(new MediaBuffer(mBufferSize));
- }
-
- mCurrentPos = mOffset;
-
- mStarted = true;
- return OK;
-}
-
-status_t PCMSource::stop() {
-
- CHECK(mStarted);
- delete mGroup;
- mGroup = NULL;
-
- mStarted = false;
- return OK;
-}
-
-sp<MetaData> PCMSource::getFormat() {
- return mMeta;
-}
-
-status_t PCMSource::read(
- MediaBuffer **out, const ReadOptions *options) {
- *out = NULL;
- int64_t seekTimeUs;
- ReadOptions::SeekMode seek = ReadOptions::SEEK_CLOSEST_SYNC;
- if (options != NULL && options->getSeekTo(&seekTimeUs,&seek)) {
- int64_t pos = (seekTimeUs * mSampleRate) / 1000000 * mNumChannels * 2;
- if (pos > mSize) {
- pos = mSize;
- }
- mCurrentPos = pos + mOffset;
- }
-
- MediaBuffer *buffer;
- status_t err = mGroup->acquire_buffer(&buffer);
- if (err != OK) {
- return err;
- }
-
- ssize_t n = mDataSource->readAt(
- mCurrentPos, buffer->data(), mBufferSize);
- if (n <= 0) {
- buffer->release();
- buffer = NULL;
- return ERROR_END_OF_STREAM;
- }
-
- mCurrentPos += n;
-
- buffer->set_range(0, n);
-
- if (mBitsPerSample == 8) {
- // Convert 8-bit unsigned samples to 16-bit signed.
-
- MediaBuffer *tmp;
- CHECK_EQ(mGroup->acquire_buffer(&tmp), OK);
-
- // The new buffer holds the sample number of samples, but each
- // one is 2 bytes wide.
- tmp->set_range(0, 2 * n);
-
- int16_t *dst = (int16_t *)tmp->data();
- const uint8_t *src = (const uint8_t *)buffer->data();
- while (n-- > 0) {
- *dst++ = ((int16_t)(*src) - 128) * 256;
- ++src;
- }
-
- buffer->release();
- buffer = tmp;
- } else if (mBitsPerSample == 24) {
- // Convert 24-bit signed samples to 16-bit signed.
-
- const uint8_t *src =
- (const uint8_t *)buffer->data() + buffer->range_offset();
- int16_t *dst = (int16_t *)src;
-
- size_t numSamples = buffer->range_length() / 3;
- for (size_t i = 0; i < numSamples; ++i) {
- int32_t x = (int32_t)(src[0] | src[1] << 8 | src[2] << 16);
- x = (x << 8) >> 8; // sign extension
-
- x = x >> 8;
- *dst++ = (int16_t)x;
- src += 3;
- }
-
- buffer->set_range(buffer->range_offset(), 2 * numSamples);
- }
-
- size_t bytesPerSample = mBitsPerSample >> 3;
-
- buffer->meta_data()->setInt64(
- kKeyTime,
- 1000000LL * (mCurrentPos - mOffset)
- / (mNumChannels * bytesPerSample) / mSampleRate);
-
-
- *out = buffer;
-
- return OK;
-}
-
-} // namespace android
diff --git a/media/libstagefright/colorconversion/Android.mk b/media/libstagefright/colorconversion/Android.mk
index 89ed50f2b454..62ba40f449bc 100644
--- a/media/libstagefright/colorconversion/Android.mk
+++ b/media/libstagefright/colorconversion/Android.mk
@@ -1,10 +1,6 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
-ifeq ($(BOARD_HAVE_CODEC_SUPPORT),STERICSSON_CODEC_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_CODEC_SUPPORT
-endif
-
LOCAL_SRC_FILES:= \
ColorConverter.cpp \
SoftwareRenderer.cpp
diff --git a/media/libstagefright/colorconversion/ColorConverter.cpp b/media/libstagefright/colorconversion/ColorConverter.cpp
index 70ef74eba1c7..5cc3f78804ab 100644
--- a/media/libstagefright/colorconversion/ColorConverter.cpp
+++ b/media/libstagefright/colorconversion/ColorConverter.cpp
@@ -47,7 +47,6 @@ bool ColorConverter::isValid() const {
case OMX_QCOM_COLOR_FormatYVU420SemiPlanar:
case OMX_COLOR_FormatYUV420SemiPlanar:
case OMX_TI_COLOR_FormatYUV420PackedSemiPlanar:
- case OMX_STE_COLOR_FormatYUV420PackedSemiPlanarMB:
return true;
default:
@@ -123,10 +122,6 @@ status_t ColorConverter::convert(
err = convertTIYUV420PackedSemiPlanar(src, dst);
break;
- case OMX_STE_COLOR_FormatYUV420PackedSemiPlanarMB:
- err = convertSTEYUV420PackedSemiPlanarMB(src, dst);
- break;
-
default:
{
CHECK(!"Should not be here. Unknown color conversion.");
@@ -498,143 +493,6 @@ status_t ColorConverter::convertTIYUV420PackedSemiPlanar(
return OK;
}
-status_t ColorConverter::convertSTEYUV420PackedSemiPlanarMB(
- const BitmapParams &src, const BitmapParams &dst) {
-
- if (!((dst.mWidth & 1) == 0
- && src.mCropLeft == 0
- && src.mCropTop == 0
- && src.cropWidth() == dst.cropWidth()
- && src.cropHeight() == dst.cropHeight())) {
- return ERROR_UNSUPPORTED;
- }
-
- OMX_U32 mx = src.mWidth / 16;
- OMX_U32 my = src.mHeight / 16;
- OMX_U32 lx, ly;
- OMX_U32 *pChroma, *pLuma = (OMX_U32 *)src.mBits;
-
- pChroma = (OMX_U32 *)src.mBits + mx * my * 64;
- for (ly = 0; ly < my; ly++) {
- for (lx = 0; lx < mx; lx++) {
- OMX_U32 col, row, lumaWord, chromaWord1 = 0, rgbWord, i;
- OMX_U8 y[4], cb[4], cr[4], r[4], g[4], b[4];
- OMX_U32 *dstBuf, *locBuf;
- OMX_U32 *pBurstLuma = 0, *pBurstChroma = 0;
- OMX_U32 *pWordLuma = 0, *pWordChroma = 0;
- OMX_U8 nbOfBlock;
-
- dstBuf = ((OMX_U32 *)dst.mBits) + (ly * 16) * dst.mWidth / 2;
- dstBuf += (lx * 16) / 2;
-
- pBurstLuma = pLuma;
- pBurstChroma = pChroma;
-
- for (col = 0; col < 2; col++) {
- // conversion of a macroblock
- for (nbOfBlock = 0; nbOfBlock < 2; nbOfBlock++) {
- locBuf = dstBuf + 4 * col + 2 * nbOfBlock;
- OMX_U32 dstRowOrigo = ly * 16 * dst.mWidth;
-
- switch (nbOfBlock) {
- case 0:
- pWordLuma = pBurstLuma;
- pWordChroma = pBurstChroma;
- break;
- case 1:
- pWordLuma = pBurstLuma + 1;
- pWordChroma = pBurstChroma + 1;
- break;
- }
- for (row = 0; row < 16; row++) {
-
- // Check for cropping on the y axis
- if (ly * 16 + row >= dst.mHeight) {
- break;
- }
-
- lumaWord = *pWordLuma;
- pWordLuma += 2;
- if (row % 2 == 0) {
- chromaWord1 = *pWordChroma;
- pWordChroma += 2;
- }
-
- y[3] = ((lumaWord >> 24) & 0xff);
- y[2] = ((lumaWord >> 16) & 0xff);
- y[1] = ((lumaWord >> 8) & 0xff);
- y[0] = ((lumaWord >> 0) & 0xff);
-
- cb[0] = cb[1] = ((chromaWord1 >> 0) & 0xff);
- cb[2] = cb[3] = ((chromaWord1 >> 16) & 0xff);
- cr[0] = cr[1] = ((chromaWord1 >> 8) & 0xff);
- cr[2] = cr[3] = ((chromaWord1 >> 24) & 0xff);
-
- for (i = 0; i < 4; i++) {
-
- int32_t rW,gW,bW;
-
- rW = 298 * y[i] + 408 * cr[i] - 57059;
- gW = 298 * y[i] - 100 * cb[i] - 208 * cr[i] + 34713;
- bW = 298 * y[i] + 516 * cb[i] - 70887;
-
- if (rW < 0) {
- r[i] = 0;
- } else if (rW >= 65536) {
- r[i] = 255;
- } else {
- r[i] = (rW >> 8);
- }
- if (gW < 0) {
- g[i] = 0;
- } else if (gW >= 65536) {
- g[i] = 255;
- } else {
- g[i] = (gW >> 8);
- }
- if (bW < 0) {
- b[i] = 0;
- } else if (bW >= 65536) {
- b[i] = 255;
- } else {
- b[i] = (bW >> 8);
- }
- r[i] >>= 3;
- g[i] >>= 2;
- b[i] >>= 3;
- }
- for (i = 0; i < 4; i += 2) {
-
- // Check for cropping on the x axis
- OMX_U32 rowPos = (locBuf - (OMX_U32 *)dst.mBits) * 2 - dstRowOrigo;
- if (rowPos >= dst.mWidth) {
- locBuf++;
- continue;
- }
-
- rgbWord = (r[i + 1] << 27) +
- (g[i + 1] << 21) +
- (b[i + 1] << 16) +
- (r[i] << 11) +
- (g[i] << 5) +
- (b[i] << 0);
- *locBuf++ = rgbWord;
- }
- locBuf += dst.mWidth / 2 - 2;
- dstRowOrigo += dst.mWidth;
- } //end of for 16 loop
- } //end of 2 block loop
- pBurstLuma += 32;
- pBurstChroma += 16;
- } // end of 2 col loop
- pLuma += 64;
- pChroma += 32;
- }
- }
-
- return OK;
-}
-
uint8_t *ColorConverter::initClip() {
static const signed kClipMin = -278;
static const signed kClipMax = 535;
diff --git a/media/libstagefright/foundation/ABitReader.cpp b/media/libstagefright/foundation/ABitReader.cpp
index 5d317862cc1f..5499c32bbaba 100644
--- a/media/libstagefright/foundation/ABitReader.cpp
+++ b/media/libstagefright/foundation/ABitReader.cpp
@@ -22,9 +22,7 @@ namespace android {
ABitReader::ABitReader(const uint8_t *data, size_t size)
: mData(data),
- mOriginalData(data),
mSize(size),
- mOriginalSize(size),
mReservoir(0),
mNumBitsLeft(0) {
}
@@ -80,19 +78,6 @@ void ABitReader::skipBits(size_t n) {
}
}
-void ABitReader::rewindBits(size_t n) {
- CHECK_GE(mOriginalSize * 8 - numBitsLeft(), n);
-
- size_t bitsLeft = numBitsLeft();
-
- mData = mOriginalData;
- mSize = mOriginalSize;
- mReservoir = 0;
- mNumBitsLeft = 0;
-
- skipBits(mOriginalSize * 8 - bitsLeft - n);
-}
-
void ABitReader::putBits(uint32_t x, size_t n) {
CHECK_LE(n, 32u);
diff --git a/media/libstagefright/foundation/Android.mk b/media/libstagefright/foundation/Android.mk
index 648f945334c7..d5025a13ed86 100644
--- a/media/libstagefright/foundation/Android.mk
+++ b/media/libstagefright/foundation/Android.mk
@@ -1,10 +1,6 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
-ifeq ($(BOARD_HAVE_CODEC_SUPPORT),STERICSSON_CODEC_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_CODEC_SUPPORT
-endif
-
LOCAL_SRC_FILES:= \
AAtomizer.cpp \
ABitReader.cpp \
diff --git a/media/libstagefright/include/PCMExtractor.h b/media/libstagefright/include/PCMExtractor.h
deleted file mode 100644
index eec72326283e..000000000000
--- a/media/libstagefright/include/PCMExtractor.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- * Copyright (C) 2010 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.
- *
- * Author: Andreas Gustafsson (andreas.a.gustafsson@stericsson.com)
- * for ST-Ericsson
- */
-
-#ifndef PCM_EXTRACTOR_H_
-
-#define PCM_EXTRACTOR_H_
-
-#include <media/stagefright/MediaSource.h>
-#include <media/stagefright/MediaExtractor.h>
-
-using namespace android;
-
-namespace android {
-
-class DataSource;
-class String8;
-
-class PCMExtractor : public MediaExtractor {
-public:
- // Extractor assumes ownership of "source".
- PCMExtractor(const sp<DataSource> &source);
-
- virtual size_t countTracks();
- virtual sp<MediaSource> getTrack(size_t index);
- virtual sp<MetaData> getTrackMetaData(size_t index, uint32_t flags);
-
- virtual sp<MetaData> getMetaData();
-
-protected:
- virtual ~PCMExtractor();
-
-private:
- sp<DataSource> mDataSource;
- status_t mInitCheck;
- bool mValidFormat;
- uint16_t mNumChannels;
- uint32_t mSampleRate;
- uint16_t mBitsPerSample;
- off_t mDataOffset;
- size_t mDataSize;
- sp<MetaData> mTrackMeta;
-
- status_t init();
-
- PCMExtractor(const PCMExtractor &);
- PCMExtractor &operator=(const PCMExtractor &);
-};
-
-} // namespace android
-
-#endif // PCM_EXTRACTOR_H_
diff --git a/media/libstagefright/omx/Android.mk b/media/libstagefright/omx/Android.mk
index 0452a4d8bdaf..d844f3dfe6b6 100644
--- a/media/libstagefright/omx/Android.mk
+++ b/media/libstagefright/omx/Android.mk
@@ -1,10 +1,6 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
-ifeq ($(BOARD_HAVE_CODEC_SUPPORT),STERICSSON_CODEC_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_CODEC_SUPPORT
-endif
-
LOCAL_C_INCLUDES += $(JNI_H_INCLUDE)
LOCAL_SRC_FILES:= \
diff --git a/media/libstagefright/omx/SoftOMXPlugin.cpp b/media/libstagefright/omx/SoftOMXPlugin.cpp
index edc21693af7d..1e33f05f0ce1 100644
--- a/media/libstagefright/omx/SoftOMXPlugin.cpp
+++ b/media/libstagefright/omx/SoftOMXPlugin.cpp
@@ -34,7 +34,6 @@ static const struct {
const char *mRole;
} kComponents[] = {
- { "OMX.ST.aac.decoder", "ste_aacdec", "audio_decoder.aac" },
{ "OMX.google.aac.decoder", "aacdec", "audio_decoder.aac" },
{ "OMX.google.amrnb.decoder", "amrdec", "audio_decoder.amrnb" },
{ "OMX.google.amrwb.decoder", "amrdec", "audio_decoder.amrwb" },
@@ -43,7 +42,6 @@ static const struct {
{ "OMX.google.g711.mlaw.decoder", "g711dec", "audio_decoder.g711mlaw" },
{ "OMX.google.h263.decoder", "mpeg4dec", "video_decoder.h263" },
{ "OMX.google.mpeg4.decoder", "mpeg4dec", "video_decoder.mpeg4" },
- { "OMX.ST.mp3.decoder", "ste_mp3dec", "audio_decoder.mp3" },
{ "OMX.google.mp3.decoder", "mp3dec", "audio_decoder.mp3" },
{ "OMX.google.vorbis.decoder", "vorbisdec", "audio_decoder.vorbis" },
{ "OMX.google.vpx.decoder", "vpxdec", "video_decoder.vpx" },
diff --git a/media/libstagefright/rtsp/AMPEG4AudioAssembler.cpp b/media/libstagefright/rtsp/AMPEG4AudioAssembler.cpp
index 43751a3550fc..11d9c220959c 100644
--- a/media/libstagefright/rtsp/AMPEG4AudioAssembler.cpp
+++ b/media/libstagefright/rtsp/AMPEG4AudioAssembler.cpp
@@ -201,33 +201,13 @@ static status_t parseAudioSpecificConfig(ABitReader *bits, sp<ABuffer> *asc) {
CHECK_EQ(parseAudioObjectType(bits, &extensionAudioObjectType),
(status_t)OK);
- if (extensionAudioObjectType == 5) {
- sbrPresent = bits->getBits(1);
- if (sbrPresent == 1) {
- unsigned extensionSamplingFreqIndex = bits->getBits(4);
- if (extensionSamplingFreqIndex == 0x0f) {
- /* unsigned extensionSamplingFrequency = */bits->getBits(24);
- }
- if (bits->numBitsLeft() >= 12) {
- syncExtensionType = bits->getBits(11);
- if (syncExtensionType == 0x548) {
- /* unsigned psPresent */bits->getBits(1);
- } else {
- // Rewind bitstream so that the reading of second
- // syncExtensionType has no effect
- bits->rewindBits(11);
- }
- }
- }
- } else if (extensionAudioObjectType == 22) {
- sbrPresent = bits->getBits(1);
- if (sbrPresent == 1) {
- unsigned extensionSamplingFreqIndex = bits->getBits(4);
- if (extensionSamplingFreqIndex == 0x0f) {
- /* unsigned extensionSamplingFrequency = */bits->getBits(24);
- }
+ sbrPresent = bits->getBits(1);
+
+ if (sbrPresent == 1) {
+ unsigned extensionSamplingFreqIndex = bits->getBits(4);
+ if (extensionSamplingFreqIndex == 0x0f) {
+ /* unsigned extensionSamplingFrequency = */bits->getBits(24);
}
- /* unsigned extensionChannelConfiguration = */bits->getBits(4);
}
size_t numBitsInExtension =
@@ -243,7 +223,7 @@ static status_t parseAudioSpecificConfig(ABitReader *bits, sp<ABuffer> *asc) {
bits->skipBits(8 - (numBitsInExtension & 7));
}
} else {
- bits->rewindBits(11);
+ bits->putBits(syncExtensionType, 11);
}
}
@@ -355,14 +335,11 @@ static status_t parseStreamMuxConfig(
break;
}
- status_t parseResult = OK;
*otherDataPresent = bits->getBits(1);
*otherDataLenBits = 0;
if (*otherDataPresent) {
if (audioMuxVersion == 1) {
TRESPASS(); // XXX to be implemented
- } else if (bits->numBitsLeft() < 9) {
- parseResult = ERROR_MALFORMED;
} else {
*otherDataLenBits = 0;
@@ -372,45 +349,13 @@ static status_t parseStreamMuxConfig(
otherDataLenEsc = bits->getBits(1);
unsigned otherDataLenTmp = bits->getBits(8);
(*otherDataLenBits) += otherDataLenTmp;
- } while (otherDataLenEsc && bits->numBitsLeft() >= 9);
-
- if (otherDataLenEsc) {
- parseResult = ERROR_MALFORMED;
- }
- }
- }
-
- if (parseResult == OK && bits->numBitsLeft() >= 1) {
- unsigned crcCheckPresent = bits->getBits(1);
- if (crcCheckPresent && bits->numBitsLeft() >= 8) {
- /* unsigned crcCheckSum = */bits->getBits(8);
- } else if (crcCheckPresent && bits->numBitsLeft() < 8) {
- parseResult = ERROR_MALFORMED;
- }
- } else {
- parseResult = ERROR_MALFORMED;
- }
-
- // Verify that only bits are left for byte aligning and that
- // any remaining bits are 0
- if (bits->numBitsLeft() / 8 > 0) {
- parseResult = ERROR_MALFORMED;
- } else {
- unsigned remainder = bits->getBits(bits->numBitsLeft());
- if (remainder != 0) {
- parseResult = ERROR_MALFORMED;
+ } while (otherDataLenEsc);
}
}
- // Check if config string parsing has failed (then probably due to a
- // malformed AudioSpecificConfig) and if so, assume most common
- // configuration for the variables after AudioSpecificConfig.
- if (parseResult != OK) {
- LOGW("LATM config string parsing has failed, assuming most common case "
- "of frameLengthType=0, otherDataPresent=0, and otherDataLenBits=0");
- *frameLengthType = 0;
- *otherDataPresent = 0;
- *otherDataLenBits = 0;
+ unsigned crcCheckPresent = bits->getBits(1);
+ if (crcCheckPresent) {
+ /* unsigned crcCheckSum = */bits->getBits(8);
}
return OK;
diff --git a/media/libstagefright/rtsp/Android.mk b/media/libstagefright/rtsp/Android.mk
index d97a8bf84465..823034787fbb 100644
--- a/media/libstagefright/rtsp/Android.mk
+++ b/media/libstagefright/rtsp/Android.mk
@@ -2,10 +2,6 @@ LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
-ifeq ($(BOARD_HAVE_CODEC_SUPPORT),STERICSSON_CODEC_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_CODEC_SUPPORT
-endif
-
LOCAL_SRC_FILES:= \
AAMRAssembler.cpp \
AAVCAssembler.cpp \
@@ -39,10 +35,6 @@ include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
-ifeq ($(BOARD_HAVE_CODEC_SUPPORT),STERICSSON_CODEC_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_CODEC_SUPPORT
-endif
-
LOCAL_SRC_FILES:= \
rtp_test.cpp
diff --git a/opengl/include/EGL/eglext.h b/opengl/include/EGL/eglext.h
index 142fa0513612..ca1186337829 100644
--- a/opengl/include/EGL/eglext.h
+++ b/opengl/include/EGL/eglext.h
@@ -236,6 +236,18 @@ struct ANativeWindowBuffer;
/* EGL_NV_system_time
*/
+#ifndef EGL_NV_system_time
+#define EGL_NV_system_time 1
+typedef khronos_int64_t EGLint64NV;
+typedef khronos_uint64_t EGLuint64NV;
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV(void);
+EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV(void);
+#endif
+typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC)(void);
+typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC)(void);
+#endif
+
/* EGL_ANDROID_blob_cache
*/
diff --git a/opengl/include/GLES2/gl2ext.h b/opengl/include/GLES2/gl2ext.h
index 28c7aef71288..9db4e252c559 100644
--- a/opengl/include/GLES2/gl2ext.h
+++ b/opengl/include/GLES2/gl2ext.h
@@ -188,18 +188,6 @@ typedef void* GLeglImageOES;
#endif
/*------------------------------------------------------------------------*
- * ARM extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_ARM_mali_shader_binary */
-#ifndef GL_ARM_mali_shader_binary
-#define GL_MALI_SHADER_BINARY_ARM 0x8F60
-#endif
-
-/* GL_ARM_rgba8 */
-/* No new tokens introduced by this extension. */
-
-/*------------------------------------------------------------------------*
* EXT extension tokens
*------------------------------------------------------------------------*/
@@ -615,20 +603,6 @@ typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monito
#endif
/*------------------------------------------------------------------------*
- * ARM extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_ARM_mali_shader_binary */
-#ifndef GL_ARM_mali_shader_binary
-#define GL_ARM_mali_shader_binary 1
-#endif
-
-/* GL_ARM_rgba8 */
-#ifndef GL_ARM_rgba8
-#define GL_ARM_rgba8 1
-#endif
-
-/*------------------------------------------------------------------------*
* EXT extension functions
*------------------------------------------------------------------------*/
diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp
index 84949bb5ab57..e5004e1e5033 100644
--- a/opengl/libs/EGL/eglApi.cpp
+++ b/opengl/libs/EGL/eglApi.cpp
@@ -49,23 +49,27 @@ using namespace android;
// ----------------------------------------------------------------------------
+#define EGL_VERSION_HW_ANDROID 0x3143
+
+#ifdef TARGET_BOARD_SNOWBALL
static char const * const sVendorString = "Android";
static char const * const sVersionString = "1.4 Android META-EGL";
static char const * const sClientApiString = "OpenGL ES";
static char const * const sExtensionString =
- "EGL_KHR_image "
- "EGL_KHR_image_base "
- "EGL_KHR_image_pixmap "
- "EGL_KHR_gl_texture_2D_image "
- "EGL_KHR_gl_texture_cubemap_image "
- "EGL_KHR_gl_renderbuffer_image "
- "EGL_KHR_fence_sync "
- "EGL_ANDROID_image_native_buffer "
- "EGL_ANDROID_swap_rectangle "
- /* "EGL_NV_system_time "*/
- ;
-
-#define EGL_VERSION_HW_ANDROID 0x3143
+ "EGL_KHR_image "
+ "EGL_KHR_image_base "
+ "EGL_KHR_image_pixmap "
+ "EGL_KHR_gl_texture_2D_image "
+ "EGL_KHR_gl_texture_cubemap_image "
+ "EGL_KHR_gl_renderbuffer_image "
+ "EGL_KHR_fence_sync "
+ "EGL_ANDROID_image_native_buffer "
+ "EGL_ANDROID_swap_rectangle "
+#ifndef TARGET_BOARD_SNOWBALL
+ "EGL_NV_system_time "
+#endif
+ ;
+#endif
struct extention_map_t {
const char* name;
@@ -81,6 +85,12 @@ static const extention_map_t sExtentionMap[] = {
(__eglMustCastToProperFunctionPointerType)&eglCreateImageKHR },
{ "eglDestroyImageKHR",
(__eglMustCastToProperFunctionPointerType)&eglDestroyImageKHR },
+#ifndef TARGET_BOARD_SNOWBALL
+ { "eglGetSystemTimeFrequencyNV",
+ (__eglMustCastToProperFunctionPointerType)&eglGetSystemTimeFrequencyNV },
+ { "eglGetSystemTimeNV",
+ (__eglMustCastToProperFunctionPointerType)&eglGetSystemTimeNV },
+#endif
};
// accesses protected by sExtensionMapMutex
@@ -983,10 +993,13 @@ const char* eglQueryString(EGLDisplay dpy, EGLint name)
case EGL_VERSION:
return dp->getVersionString();
case EGL_EXTENSIONS:
+#ifdef TARGET_BOARD_SNOWBALL
if (NULL != dp->disp[IMPL_HARDWARE].queryString.extensions)
return dp->disp[IMPL_HARDWARE].queryString.extensions;
else
return sExtensionString;
+#endif
+ return dp->getExtensionString();
case EGL_CLIENT_APIS:
return dp->getClientApiString();
case EGL_VERSION_HW_ANDROID: {
@@ -1459,3 +1472,47 @@ EGLBoolean eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute
/* ANDROID extensions entry-point go here */
+#ifndef TARGET_BOARD_SNOWBALL
+// ----------------------------------------------------------------------------
+// NVIDIA extensions
+// ----------------------------------------------------------------------------
+EGLuint64NV eglGetSystemTimeFrequencyNV()
+{
+ clearError();
+
+ if (egl_init_drivers() == EGL_FALSE) {
+ return setError(EGL_BAD_PARAMETER, EGL_FALSE);
+ }
+
+ EGLuint64NV ret = 0;
+ egl_connection_t* const cnx = &gEGLImpl[IMPL_HARDWARE];
+
+ if (cnx->dso) {
+ if (cnx->egl.eglGetSystemTimeFrequencyNV) {
+ return cnx->egl.eglGetSystemTimeFrequencyNV();
+ }
+ }
+
+ return setErrorQuiet(EGL_BAD_DISPLAY, 0);
+}
+
+EGLuint64NV eglGetSystemTimeNV()
+{
+ clearError();
+
+ if (egl_init_drivers() == EGL_FALSE) {
+ return setError(EGL_BAD_PARAMETER, EGL_FALSE);
+ }
+
+ EGLuint64NV ret = 0;
+ egl_connection_t* const cnx = &gEGLImpl[IMPL_HARDWARE];
+
+ if (cnx->dso) {
+ if (cnx->egl.eglGetSystemTimeNV) {
+ return cnx->egl.eglGetSystemTimeNV();
+ }
+ }
+
+ return setErrorQuiet(EGL_BAD_DISPLAY, 0);
+}
+#endif
diff --git a/opengl/libs/EGL/egl_entries.in b/opengl/libs/EGL/egl_entries.in
index 68acd77354ba..9ebdecf8fd21 100644
--- a/opengl/libs/EGL/egl_entries.in
+++ b/opengl/libs/EGL/egl_entries.in
@@ -63,5 +63,9 @@ EGL_ENTRY(EGLBoolean, eglGetSyncAttribKHR, EGLDisplay, EGLSyncKHR, EGLint,
EGL_ENTRY(EGLBoolean, eglSetSwapRectangleANDROID, EGLDisplay, EGLSurface, EGLint, EGLint, EGLint, EGLint)
EGL_ENTRY(EGLClientBuffer, eglGetRenderBufferANDROID, EGLDisplay, EGLSurface)
+#ifndef TARGET_BOARD_SNOWBALL
/* NVIDIA extensions */
+EGL_ENTRY(EGLuint64NV, eglGetSystemTimeFrequencyNV, void)
+EGL_ENTRY(EGLuint64NV, eglGetSystemTimeNV, void)
+#endif
diff --git a/services/audioflinger/Android.mk b/services/audioflinger/Android.mk
index 652338879ec4..fa4959298fb9 100644
--- a/services/audioflinger/Android.mk
+++ b/services/audioflinger/Android.mk
@@ -2,10 +2,6 @@ LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
-ifeq ($(BOARD_HAVE_FMRADIO_SUPPORT),STERICSSON_FMRADIO_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_FMRADIO_SUPPORT
-endif
-
LOCAL_SRC_FILES:= \
AudioFlinger.cpp \
AudioMixer.cpp.arm \
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index 59ef55b9c14f..ce701ca297c9 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -242,7 +242,6 @@ AudioFlinger::~AudioFlinger()
audio_hw_device_close(dev);
}
mAudioHwDevs.clear();
- delete mInputFMStream;
}
audio_hw_device_t* AudioFlinger::findSuitableHwDev_l(uint32_t devices)
@@ -250,8 +249,8 @@ audio_hw_device_t* AudioFlinger::findSuitableHwDev_l(uint32_t devices)
/* first matching HW device is returned */
for (size_t i = 0; i < mAudioHwDevs.size(); i++) {
audio_hw_device_t *dev = mAudioHwDevs[i];
- if ((dev->get_supported_devices(dev) & devices) == devices)
- return dev;
+ if ((dev->get_supported_devices(dev) & devices) == devices)
+ return dev;
}
return NULL;
}
@@ -864,11 +863,6 @@ unsigned int AudioFlinger::getInputFramesLost(int ioHandle)
return 0;
}
-size_t AudioFlinger::readInput(uint32_t *input, uint32_t inputClientId, void *buffer, uint32_t bytes, uint32_t *pOverwrittenBytes)
-{
- return mInputFMStream->stream->read(mInputFMStream->stream, buffer, (size_t)bytes);
-}
-
status_t AudioFlinger::setVoiceVolume(float value)
{
status_t ret = initCheck();
@@ -5068,8 +5062,7 @@ int AudioFlinger::openInput(uint32_t *pDevices,
uint32_t *pSamplingRate,
uint32_t *pFormat,
uint32_t *pChannels,
- uint32_t acoustics,
- uint32_t *pInputClientId)
+ uint32_t acoustics)
{
status_t status;
RecordThread *thread = NULL;
@@ -5096,14 +5089,13 @@ int AudioFlinger::openInput(uint32_t *pDevices,
&channels, &samplingRate,
(audio_in_acoustics_t)acoustics,
&inStream);
- LOGV("openInput() openInputStream returned input %p, SamplingRate %d, Format %d, Channels %x, acoustics %x, status %d, pInputClientId=%p",
+ LOGV("openInput() openInputStream returned input %p, SamplingRate %d, Format %d, Channels %x, acoustics %x, status %d",
inStream,
samplingRate,
format,
channels,
acoustics,
- status,
- pInputClientId);
+ status);
// If the input could not be opened with the requested parameters and we can handle the conversion internally,
// try to open again with the proposed parameters. The AudioFlinger can resample the input and do mono to stereo
@@ -5119,13 +5111,8 @@ int AudioFlinger::openInput(uint32_t *pDevices,
&inStream);
}
- if (inStream == NULL) {
- return 0;
- }
-
- AudioStreamIn *input = new AudioStreamIn(inHwDev, inStream);
-
- if (inStream != NULL && pInputClientId == NULL) {
+ if (inStream != NULL) {
+ AudioStreamIn *input = new AudioStreamIn(inHwDev, inStream);
int id = nextUniqueId();
// Start record thread
@@ -5149,48 +5136,38 @@ int AudioFlinger::openInput(uint32_t *pDevices,
// notify client processes of the new input creation
thread->audioConfigChanged_l(AudioSystem::INPUT_OPENED);
return id;
- } else if (pInputClientId != NULL && *pInputClientId == AUDIO_INPUT_CLIENT_PLAYBACK) {
- mInputFMStream = input;
- return (int)input;
}
return 0;
}
-status_t AudioFlinger::closeInput(int input, uint32_t *inputClientId)
+status_t AudioFlinger::closeInput(int input)
{
// keep strong reference on the record thread so that
// it is not destroyed while exit() is executed
- if (inputClientId == NULL) {
- sp <RecordThread> thread;
- {
- Mutex::Autolock _l(mLock);
- thread = checkRecordThread_l(input);
- if (thread == NULL) {
- return BAD_VALUE;
- }
-
- LOGV("closeInput() %d", input);
- void *param2 = 0;
- audioConfigChanged_l(AudioSystem::INPUT_CLOSED, input, param2);
- mRecordThreads.removeItem(input);
+ sp <RecordThread> thread;
+ {
+ Mutex::Autolock _l(mLock);
+ thread = checkRecordThread_l(input);
+ if (thread == NULL) {
+ return BAD_VALUE;
}
- thread->exit();
- AudioStreamIn *in = thread->clearInput();
- // from now on thread->mInput is NULL
- in->hwDev->close_input_stream(in->hwDev, in->stream);
- delete in;
- } else if (inputClientId != NULL && *inputClientId == AUDIO_INPUT_CLIENT_PLAYBACK) {
- AudioStreamIn *in = (AudioStreamIn *)input;
- in->hwDev->close_input_stream(in->hwDev, in->stream);
- delete in;
+ LOGV("closeInput() %d", input);
+ void *param2 = 0;
+ audioConfigChanged_l(AudioSystem::INPUT_CLOSED, input, param2);
+ mRecordThreads.removeItem(input);
}
+ thread->exit();
+
+ AudioStreamIn *in = thread->clearInput();
+ // from now on thread->mInput is NULL
+ in->hwDev->close_input_stream(in->hwDev, in->stream);
+ delete in;
return NO_ERROR;
}
-
status_t AudioFlinger::setStreamOutput(uint32_t stream, int output)
{
Mutex::Autolock _l(mLock);
diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h
index 243bd329a0d9..9bd2c7f49302 100644
--- a/services/audioflinger/AudioFlinger.h
+++ b/services/audioflinger/AudioFlinger.h
@@ -137,12 +137,9 @@ public:
uint32_t *pSamplingRate,
uint32_t *pFormat,
uint32_t *pChannels,
- uint32_t acoustics,
- uint32_t *pInputClientId = NULL);
+ uint32_t acoustics);
- virtual status_t closeInput(int input, uint32_t *inputClientId = NULL);
-
- virtual size_t readInput(uint32_t *input, uint32_t inputClientId, void *buffer, uint32_t bytes, uint32_t *pOverwrittenBytes);
+ virtual status_t closeInput(int input);
virtual status_t setStreamOutput(uint32_t stream, int output);
@@ -1393,7 +1390,6 @@ private:
mutable Mutex mHardwareLock;
audio_hw_device_t* mPrimaryHardwareDev;
- AudioStreamIn* mInputFMStream;
Vector<audio_hw_device_t*> mAudioHwDevs;
mutable int mHardwareStatus;
diff --git a/services/audioflinger/AudioPolicyService.cpp b/services/audioflinger/AudioPolicyService.cpp
index 15cefc059d5b..8da5ca14dd74 100644
--- a/services/audioflinger/AudioPolicyService.cpp
+++ b/services/audioflinger/AudioPolicyService.cpp
@@ -306,15 +306,14 @@ audio_io_handle_t AudioPolicyService::getInput(int inputSource,
uint32_t format,
uint32_t channels,
audio_in_acoustics_t acoustics,
- int audioSession,
- audio_input_clients *inputClientId)
+ int audioSession)
{
if (mpAudioPolicy == NULL) {
return 0;
}
Mutex::Autolock _l(mLock);
audio_io_handle_t input = mpAudioPolicy->get_input(mpAudioPolicy, inputSource, samplingRate,
- format, channels, acoustics, inputClientId);
+ format, channels, acoustics);
if (input == 0) {
return input;
@@ -1412,8 +1411,7 @@ static audio_io_handle_t aps_open_input(void *service,
uint32_t *pSamplingRate,
uint32_t *pFormat,
uint32_t *pChannels,
- uint32_t acoustics,
- uint32_t *inputClientId)
+ uint32_t acoustics)
{
sp<IAudioFlinger> af = AudioSystem::get_audio_flinger();
if (af == NULL) {
@@ -1422,16 +1420,16 @@ static audio_io_handle_t aps_open_input(void *service,
}
return af->openInput(pDevices, pSamplingRate, pFormat, pChannels,
- acoustics, inputClientId);
+ acoustics);
}
-static int aps_close_input(void *service, audio_io_handle_t input, uint32_t *inputClientId = NULL)
+static int aps_close_input(void *service, audio_io_handle_t input)
{
sp<IAudioFlinger> af = AudioSystem::get_audio_flinger();
if (af == NULL)
return PERMISSION_DENIED;
- return af->closeInput(input, inputClientId);
+ return af->closeInput(input);
}
static int aps_set_stream_output(void *service, audio_stream_type_t stream,
diff --git a/services/audioflinger/AudioPolicyService.h b/services/audioflinger/AudioPolicyService.h
index 68448508453a..d898a530cc8c 100644
--- a/services/audioflinger/AudioPolicyService.h
+++ b/services/audioflinger/AudioPolicyService.h
@@ -82,8 +82,7 @@ public:
uint32_t channels = 0,
audio_in_acoustics_t acoustics =
(audio_in_acoustics_t)0,
- int audioSession = 0,
- audio_input_clients *inputClientId = NULL);
+ int audioSession = 0);
virtual status_t startInput(audio_io_handle_t input);
virtual status_t stopInput(audio_io_handle_t input);
virtual void releaseInput(audio_io_handle_t input);
diff --git a/services/surfaceflinger/Android.mk b/services/surfaceflinger/Android.mk
index 5a084b2ae9d7..f1cb50e01d5f 100644
--- a/services/surfaceflinger/Android.mk
+++ b/services/surfaceflinger/Android.mk
@@ -38,10 +38,6 @@ ifeq ($(BOARD_HAVE_CODEC_SUPPORT),SAMSUNG_CODEC_SUPPORT)
LOCAL_CFLAGS += -DSAMSUNG_CODEC_SUPPORT
endif
-ifeq ($(BOARD_HAVE_CODEC_SUPPORT),STERICSSON_CODEC_SUPPORT)
- LOCAL_CFLAGS += -DSTERICSSON_CODEC_SUPPORT
-endif
-
LOCAL_SHARED_LIBRARIES := \
libcutils \
libhardware \
diff --git a/services/surfaceflinger/DisplayHardware/DisplayHardware.cpp b/services/surfaceflinger/DisplayHardware/DisplayHardware.cpp
index 56c8083a7b1e..f94d32149b0f 100644
--- a/services/surfaceflinger/DisplayHardware/DisplayHardware.cpp
+++ b/services/surfaceflinger/DisplayHardware/DisplayHardware.cpp
@@ -379,8 +379,6 @@ void DisplayHardware::flip(const Region& dirty) const
if (mHwc->initCheck() == NO_ERROR) {
mHwc->commit();
} else {
- // Make sure the swapbuffer call is done in sync
- mNativeWindow->compositionComplete();
eglSwapBuffers(dpy, surface);
}
checkEGLErrors("eglSwapBuffers");
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
index 186c90cbbd46..be9b2265c7db 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
@@ -89,7 +89,6 @@ status_t HWComposer::createWorkList(size_t numLayers) {
free(mList);
size_t size = sizeof(hwc_layer_list) + numLayers*sizeof(hwc_layer_t);
mList = (hwc_layer_list_t*)malloc(size);
- memset(mList, 0, size);
mCapacity = numLayers;
}
mList->flags = HWC_GEOMETRY_CHANGED;
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index c4ec78a5e828..673fda920a68 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -244,16 +244,6 @@ void Layer::setPerFrameData(hwc_layer_t* hwcl) {
void Layer::onDraw(const Region& clip) const
{
- // Convert the texture to a native format if need be.
- // convert() returns immediately if no conversion is necessary.
- if (mSurfaceTexture != NULL) {
- status_t res = mSurfaceTexture->convert();
- if (res != NO_ERROR) {
- LOGE("Layer::onDraw: texture conversion failed. "
- "Texture content for this layer will not be initialized.");
- }
- }
-
if (CC_UNLIKELY(mActiveBuffer == 0)) {
// the texture has not been created yet, this Layer has
// in fact never been drawn into. This happens frequently with
@@ -414,7 +404,7 @@ void Layer::lockPageFlip(bool& recomputeVisibleRegions)
mFlinger->signalEvent();
}
- if (mSurfaceTexture->updateTexImage(true) < NO_ERROR) {
+ if (mSurfaceTexture->updateTexImage() < NO_ERROR) {
// something happened!
recomputeVisibleRegions = true;
return;
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 1015e54f2e58..0da75c4cacc6 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -436,6 +436,7 @@ bool SurfaceFlinger::threadLoop()
// inform the h/w that we're done compositing
logger.log(GraphicLog::SF_COMPOSITION_COMPLETE, index);
+ hw.compositionComplete();
logger.log(GraphicLog::SF_SWAP_BUFFERS, index);
postFramebuffer();
@@ -443,6 +444,7 @@ bool SurfaceFlinger::threadLoop()
logger.log(GraphicLog::SF_REPAINT_DONE, index);
} else {
// pretend we did the post
+ hw.compositionComplete();
usleep(16667); // 60 fps period
}
return true;
@@ -814,6 +816,8 @@ void SurfaceFlinger::handleRepaint()
// set the frame buffer
const DisplayHardware& hw(graphicPlane(0).displayHardware());
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
uint32_t flags = hw.getFlags();
if ((flags & DisplayHardware::SWAP_RECTANGLE) ||
@@ -854,11 +858,8 @@ void SurfaceFlinger::handleRepaint()
mDirtyRegion.clear();
}
-static bool checkDrawingWithGL(hwc_layer_t* const layers, size_t layerCount);
-
void SurfaceFlinger::setupHardwareComposer(Region& dirtyInOut)
{
- bool useGL = true;
const DisplayHardware& hw(graphicPlane(0).displayHardware());
HWComposer& hwc(hw.getHwComposer());
hwc_layer_t* const cur(hwc.getLayers());
@@ -890,22 +891,6 @@ void SurfaceFlinger::setupHardwareComposer(Region& dirtyInOut)
status_t err = hwc.prepare();
LOGE_IF(err, "HWComposer::prepare failed (%s)", strerror(-err));
- /*
- * Check if GL will be used
- */
- useGL = checkDrawingWithGL(cur, count);
-
- if (!useGL) {
- return;
- }
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- if (UNLIKELY(!mWormholeRegion.isEmpty())) {
- // should never happen unless the window manager has a bug
- // draw something...
- drawWormhole();
- }
-
if (err == NO_ERROR) {
// what's happening here is tricky.
// we want to clear all the layers with the CLEAR_FB flags
@@ -973,28 +958,20 @@ void SurfaceFlinger::setupHardwareComposer(Region& dirtyInOut)
}
}
-static bool checkDrawingWithGL(hwc_layer_t* const layers, size_t layerCount)
-{
- bool useGL = false;
- if (layers) {
- for (size_t i=0 ; i<layerCount ; i++) {
- if (layers[i].compositionType == HWC_FRAMEBUFFER) {
- useGL = true;
- }
- }
- }
- return useGL;
-}
-
void SurfaceFlinger::composeSurfaces(const Region& dirty)
{
const DisplayHardware& hw(graphicPlane(0).displayHardware());
HWComposer& hwc(hw.getHwComposer());
const size_t fbLayerCount = hwc.getLayerCount(HWC_FRAMEBUFFER);
+ if (UNLIKELY(fbLayerCount && !mWormholeRegion.isEmpty())) {
+ // should never happen unless the window manager has a bug
+ // draw something...
+ drawWormhole();
+ }
/*
- * render the layers targeted at the framebuffer
+ * and then, render the layers targeted at the framebuffer
*/
hwc_layer_t* const cur(hwc.getLayers());
const Vector< sp<LayerBase> >& layers(mVisibleLayersSortedByZ);
@@ -1801,14 +1778,24 @@ status_t SurfaceFlinger::renderScreenToTextureLocked(DisplayID dpy,
GLuint name, tname;
glGenTextures(1, &tname);
glBindTexture(GL_TEXTURE_2D, tname);
+#ifdef TARGET_BOARD_SNOWBALL
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
hw_w, hw_h, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
+#else
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
+ hw_w, hw_h, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
+#endif
if (glGetError() != GL_NO_ERROR) {
while ( glGetError() != GL_NO_ERROR ) ;
GLint tw = (2 << (31 - clz(hw_w)));
GLint th = (2 << (31 - clz(hw_h)));
+#ifdef TARGET_BOARD_SNOWBALL
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
tw, th, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
+#else
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
+ tw, th, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
+#endif
u = GLfloat(hw_w) / tw;
v = GLfloat(hw_h) / th;
}
@@ -2380,6 +2367,8 @@ status_t SurfaceFlinger::captureScreenImplLocked(DisplayID dpy,
glDeleteRenderbuffersOES(1, &tname);
glDeleteFramebuffersOES(1, &name);
+ hw.compositionComplete();
+
// LOGD("screenshot: result = %s", result<0 ? strerror(result) : "OK");
return result;
@@ -2597,9 +2586,9 @@ sp<GraphicBuffer> GraphicBufferAlloc::createGraphicBuffer(uint32_t w, uint32_t h
if (err == NO_MEMORY) {
GraphicBuffer::dumpAllocationsToSystemLog();
}
- LOGE("GraphicBufferAlloc::createGraphicBuffer(w=%d, h=%d, format=%#x) "
+ LOGE("GraphicBufferAlloc::createGraphicBuffer(w=%d, h=%d) "
"failed (%s), handle=%p",
- w, h, format, strerror(-err), graphicBuffer->handle);
+ w, h, strerror(-err), graphicBuffer->handle);
return 0;
}
return graphicBuffer;