2009-03-03 19:31:44 -08:00
|
|
|
/*
|
|
|
|
**
|
|
|
|
** Copyright 2008, The Android Open Source Project
|
|
|
|
**
|
|
|
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
** you may not use this file except in compliance with the License.
|
|
|
|
** 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.
|
|
|
|
*/
|
|
|
|
|
|
|
|
// Proxy for media player implementations
|
|
|
|
|
|
|
|
//#define LOG_NDEBUG 0
|
|
|
|
#define LOG_TAG "MediaPlayerService"
|
|
|
|
#include <utils/Log.h>
|
|
|
|
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/stat.h>
|
|
|
|
#include <dirent.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
|
|
|
|
#include <string.h>
|
2009-06-03 17:32:49 -07:00
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
#include <cutils/atomic.h>
|
2009-07-13 14:37:49 -07:00
|
|
|
#include <cutils/properties.h> // for property_get
|
2009-06-03 17:32:49 -07:00
|
|
|
|
|
|
|
#include <utils/misc.h>
|
2009-03-03 19:31:44 -08:00
|
|
|
|
|
|
|
#include <android_runtime/ActivityManager.h>
|
2009-06-03 17:32:49 -07:00
|
|
|
|
2009-05-19 19:08:10 -07:00
|
|
|
#include <binder/IPCThreadState.h>
|
|
|
|
#include <binder/IServiceManager.h>
|
|
|
|
#include <binder/MemoryHeapBase.h>
|
|
|
|
#include <binder/MemoryBase.h>
|
2009-05-12 23:25:55 -07:00
|
|
|
#include <utils/Errors.h> // for status_t
|
|
|
|
#include <utils/String8.h>
|
2009-09-20 10:42:13 -07:00
|
|
|
#include <utils/SystemClock.h>
|
2009-05-12 23:25:55 -07:00
|
|
|
#include <utils/Vector.h>
|
2009-03-03 19:31:44 -08:00
|
|
|
#include <cutils/properties.h>
|
|
|
|
|
|
|
|
#include <media/MediaPlayerInterface.h>
|
|
|
|
#include <media/mediarecorder.h>
|
|
|
|
#include <media/MediaMetadataRetrieverInterface.h>
|
2009-07-20 15:07:26 -07:00
|
|
|
#include <media/Metadata.h>
|
2009-03-03 19:31:44 -08:00
|
|
|
#include <media/AudioTrack.h>
|
|
|
|
|
|
|
|
#include "MediaRecorderClient.h"
|
|
|
|
#include "MediaPlayerService.h"
|
|
|
|
#include "MetadataRetrieverClient.h"
|
|
|
|
|
|
|
|
#include "MidiFile.h"
|
|
|
|
#include "VorbisPlayer.h"
|
|
|
|
#include <media/PVPlayer.h>
|
2009-07-13 14:37:49 -07:00
|
|
|
#include "TestPlayerStub.h"
|
Squashed commit of the following:
commit 8d179995654c19d9094e51989dc84ed0deba6e04
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 16:30:40 2009 -0700
Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.
commit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 14:06:00 2009 -0700
OMX::list_nodes API, stagefright --list now lists all available OMX components.
commit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 16:04:29 2009 -0700
Reenabled "record" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.
commit d363dd74f611577567c66d25900d6264c306468c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:59:58 2009 -0700
Make non-socket communication in IOMX the default.
commit e89fc82c4fd138c88339887baf72f1d0e67f8660
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:32:33 2009 -0700
The OMX interface now optionally supports communication through the binder only (no sockets involved)
commit 28611de11223fba65299787cdd33f7fdbd6a60a3
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 15:09:13 2009 -0700
Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}
commit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 12:21:46 2009 -0700
Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...
commit ae209a2b5d09caed5dd383c910f238926aaa8fc6
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 09:33:29 2009 -0700
Simple video decoder performance test in "stagefright" commandline tool.
commit 59fe7840111d6f46dd3c48f4950146aed962dbd2
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 16:05:12 2009 -0700
StagefrightPlayer: Properly publish video dimensions by notifying the listener.
commit 51b6598f0e47be5e12d77f1d14e111e71c593638
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 11:38:15 2009 -0700
MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.
commit 31ce53375d748da3e7d30e993ce89dae97fd65ea
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 17:23:37 2009 -0700
Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.
commit a23e312b10631a5d47f5c9831205beac6b84ab36
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 15:10:13 2009 -0700
IGenesisPlayer and friends are no more, java interface now uses local playback instead
of playing inside the media server process.
commit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 13:17:03 2009 -0700
MP3 extractor now supports seeking (only fixed bitrate files currently supported)
commit 96a790405763bfa738d1c6845c99a9fdf579b66f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 7 10:53:54 2009 -0700
Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.
commit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 16:40:02 2009 -0700
Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.
commit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 12:18:29 2009 -0700
Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.
commit 88bffc5ed4033a607080f8777a1c0ec9e3e079de
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 2 12:25:03 2009 -0700
MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.
commit 732aa0a87c7e8d8a10776b275712649954962414
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:58:56 2009 -0700
Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.
commit 669e5944b2fe0542a3b8dba0c441a94503e99fb0
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:43:02 2009 -0700
Proper support for end-of-stream signalling of MediaSources.
commit afb038f2dc594c742e554b2d42b86ffc7434e3fc
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 30 16:48:03 2009 -0700
Support for the "sniffing" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.
commit ed3644b8bd56807e1db4b32433a93a2467f1f3c5
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 13:27:52 2009 -0700
I don't think prepare should automatically start the player.
commit 11eb9b49dc4a0819d366682817cba68613f4fe12
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 11:09:22 2009 -0700
Somewhat better timing information implemented in the MP3Extractor.
commit cab023a1751735c0ed26c8493498a91d8644c6c9
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 25 15:41:56 2009 -0700
Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.
commit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:41:12 2009 -0700
Make sure we only allocate surface buffers if there is video to be played.
commit 7f85e7d92fe81740e102e09905b19354f4ac178e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:19:32 2009 -0700
Clean up a failed merge and implement stub for new API in MediaPlayerBase.
commit f0e9d494a4c03402ea7b54891848ca5a50c421b2
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 15:38:03 2009 -0700
Support yuv420->rgb565 conversion if hardware color conversion is unavailable.
commit 87223248b3099cd5261b94169f84cfd1eba56a8f
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 09:35:56 2009 -0700
Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.
commit e07e651f0325892b797f3eb64dbeca0f317afdfd
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 16:26:42 2009 -0700
Enable assertions in HTTPDataSource.
commit 0dc97adebea1721156880f4b3d5c70f8d50c53b2
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:39 2009 -0700
delete foo.
commit 7f05845dda496e7defee284d32509d127e785784
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:08 2009 -0700
added foo.
commit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 11:44:31 2009 -0700
Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.
commit d6286a6bbca639952491448fa3e609b775a8a814
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 17:11:49 2009 -0700
send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now "works" on the emulator, too.
commit 8d657e004677a7c5dae4479e8519bcaa94c18aad
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 11:58:55 2009 -0700
Instead of erasing codec specific data once it's been output to the omx node, retain the data and just rewind after a stop.
commit 279fede6ba35cbc37c35616c53406bf2c9720202
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 10:58:11 2009 -0700
Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.
commit 0f717f15a6328efd3f34082929cd8ad2351095a9
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 08:44:12 2009 -0700
Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer's notion of time mapping.
commit 0cfb63e33270daf9b215214608ab383f93a31823
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 14:25:48 2009 -0700
Massive rename.
commit 30ed8f476c4431a5275538958b3e281bd17d5eab
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 13:52:41 2009 -0700
send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.
commit b832d04011b2dd8a9632eb7e575bfe1addd1270d
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:21:17 2009 -0700
MediaBuffers can now be "clone()", they sit on top of the same data but have their own range and metadata. Once a clone's refcount drops to 0 it decrements the refcount on the original buffer.
commit 4e944672808bdf1ed40a69f3f602f93ebf7b4049
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:01:01 2009 -0700
Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.
commit ddb7529b4de4828db51432bd405fddd76cfa3b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 16:30:25 2009 -0700
More fudging with A/V sync...
commit 1e5a4d8df08237b58c06c6527a33152ae931addf
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 11:54:20 2009 -0700
API cleanup of MediaSource. Got rid of MediaRing as it really doesn't serve a purpose if OMX decoders are used.
commit 0953c65232aa9753d17d2e25c5f5526eb810cf13
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 16:59:19 2009 -0700
Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.
commit 2085b8ea9484a21fa11f94194a27405d413aeecc
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 10:17:01 2009 -0700
Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.
commit 471f143458a8a0d93cb1bf9568c63c3967279dc6
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 17:32:27 2009 -0700
Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.
commit 4010d371dbe62ce4971e13437776cba32cb0bb3d
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 16:01:07 2009 -0700
Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.
commit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 15:33:58 2009 -0700
Change the TimeSource interface's APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.
commit 08bb46fa61d12e852a424698ddb0c90700328f6e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 11:57:24 2009 -0700
Using framework's Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.
commit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 17:12:03 2009 -0700
MediaSources now publish their format.
commit 7e429a26c57bf936e1a08035d2d11839f9f00310
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 16:38:29 2009 -0700
MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.
commit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 14:39:55 2009 -0700
Sync sample seek support.
commit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 13:51:11 2009 -0700
Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn't. Fixes a problem with seek.
commit e57781d3b2c985a74cd8b60e7c8f2d576459d038
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 10:52:20 2009 -0700
First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.
commit 0551cd78fda78bf66877fb26c5a55e5ae23d8367
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 16:23:38 2009 -0700
Preliminary support for camera input.
commit f8ebafa65d10d5a06944de6b2e2992a33121b857
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 12:13:47 2009 -0700
Allow NativeMediaPlayer access to Surface's getISurface() method.
commit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:38:25 2009 -0700
Header files are now in their own genesis2 hierarchy below frameworks/base/include.
commit f49b8b234b8f6ce83148787eef540dd920f04aa6
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:22:03 2009 -0700
moved MPEG4Writer into libgenesis2.
commit 5224254919dac4728677335ea60429fa16f518b4
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:13:38 2009 -0700
Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.
commit f9a9d84f7e0465ef5d1938a068655ba39527cf99
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 16:43:11 2009 -0700
Support for getPosition() and getDuration().
commit 3206cc5140bcbc88be039f8d94b954af63e69752
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 15:37:45 2009 -0700
Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()
commit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 13:49:50 2009 -0700
Proper disconnection from the OMX service.
commit cdcf47a2c31599109ee42277c7fa14af3c600091
Author: Andreas Huber <andih@google.com>
Date: Tue May 26 17:27:06 2009 -0700
New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.
commit 0586af20ac9ae0403dd190bafd290b0f90549723
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 15:53:19 2009 -0700
Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.
commit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 13:35:30 2009 -0700
Support for http URIs in MediaPlayer, compensate for AudioTrack latency.
commit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 11:33:25 2009 -0700
Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don't shutdown cleanly within a second.
commit 1f0268f4f14ad5215668f34e06a420850174d665
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:33:16 2009 -0700
and foo.txt is gone again.
commit 0feca4e0919f345704d78ec78894bac5027bd5ed
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:28:49 2009 -0700
added foo.txt
commit 9c7d04b35cdc895a2de3602dc46522f608bd205f
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:28:04 2009 -0700
delete foo again
commit fec3ca1720992cce51b9a92b86b945da88a6b16c
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:27:45 2009 -0700
weird
commit 30a6571302333146e537e537a3a8986245cca87c
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:18:55 2009 -0700
reverse test
commit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:18:22 2009 -0700
test
commit a9eeafec6e46072cac41e54ebdbd153cb7ae7518
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 16:37:50 2009 -0700
Use the video ring again for now.
commit e05ff3d3c1c4f89ef499a2b172138a775fd694e3
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 15:42:19 2009 -0700
Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.
commit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 09:56:11 2009 -0700
Fix the build, all binder-related headers have moved and there's a new library libbinde
r to link against now.
commit 23e0a24404d16c898c2c6b3c7495ad303844bc71
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 08:42:04 2009 -0700
Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss & friends) not currently working.
commit 9cd77adb1ac194197364ffad00a0d7215f458e1a
Author: Andreas Huber <andih@google.com>
Date: Wed May 20 12:31:45 2009 -0700
New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.
commit 5c510fb55ffed7ec25305999ed9b6c1eec48d503
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 15:40:06 2009 -0700
Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.
commit f6c7a2040b8eb43326621f12c3a936e09b3a70e3
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 11:03:04 2009 -0700
The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.
commit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac
Author: Andreas Huber <andih@google.com>
Date: Thu May 14 12:39:34 2009 -0700
dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.
commit 380369f54a8027cbc9349305184d6bf527a24efe
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 17:32:00 2009 -0700
Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.
commit b5cada56b9089a23e0c461352a97dc71e08b424d
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 12:11:06 2009 -0700
Introduction of TimeSource class, clean shutdown of OMX Nodes.
commit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 17:11:56 2009 -0700
Helper classes MediaRing and MediaPlayer.
commit 9aaed8739b4bb941473da367fb88f63224d2f1b7
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 14:19:18 2009 -0700
Using mmap to map a file instead of going through FILE* improves performance, who knew?
commit ad097a78bbd002c59193ffdc39b64935928426c7
Author: Andreas Huber <andih@google.com>
Date: Mon May 11 16:42:42 2009 -0700
Added a performance test, refactored AudioDecoder a little.
commit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 16:19:29 2009 -0700
No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.
commit 858955b42c29b8033841a8caaa56c2a449810ef3
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 14:02:38 2009 -0700
Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.
commit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 13:21:45 2009 -0700
Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes
commit 3941fcf87a48dda81683df727dfb1381f62d9184
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 16:37:45 2009 -0700
some refactoring. Most streams play now.
commit d3152862840d4dd39068e5197bec8674f3d55dd5
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 15:37:32 2009 -0700
Misc. changes to support H264 decoding using the qcom hardware decoder
commit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 09:28:18 2009 -0700
Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.
commit fe6a50943f885e065d4061aa727a54417e9f36db
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 14:18:27 2009 -0700
Refactored commandline app instantiation of the decoder.
commit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 10:41:14 2009 -0700
Proper audio/video synchronization.
commit 569ee3a23f600f4b6b87c6178c0223b06e97f201
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 09:17:20 2009 -0700
Preliminary support for timestamps.
commit e4e302a89207550d8a7170d8c0afbd9c15047c84
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:13:12 2009 -0700
Another quick hack job to make CachingDataSource thread-safe as well.
commit dfb376a58bd7c09aa04e89558186fcfe13fe696c
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:08:14 2009 -0700
Quick rushjob to make FileSource and SampleTable thread safe.
commit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 17:22:04 2009 -0700
Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.
commit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 09:26:42 2009 -0700
Getting rid of old sample code to drive the OMXNode binder interface.
commit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 16:21:11 2009 -0700
Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder
commit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 15:56:19 2009 -0700
Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)
commit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 11:52:48 2009 -0700
Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.
commit 1470427866b0d3e0ce6848b4edc01c13a09be289
Author: Andreas Huber <andih@google.com>
Date: Thu Apr 30 15:19:31 2009 -0700
Another checkpoint, amr decoding now functional.
commit e612d044439f56331b6a2bc4a88622e04d4d42e7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 12:11:29 2009 -0700
string wrapper around String8, various fixes, shoutcast now works again.
commit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 11:08:18 2009 -0700
Initial check-in of OMXNode binder interface.
commit 7880d2957f74c0d7fba7679431ff5adb3780543b
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 10:05:01 2009 -0700
Initial check-in of both libgenesis2 and the genesis2 commandline tool.
2009-07-14 16:56:47 -07:00
|
|
|
#include "StagefrightPlayer.h"
|
|
|
|
|
|
|
|
#include <OMX.h>
|
2009-07-13 14:37:49 -07:00
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
/* desktop Linux needs a little help with gettid() */
|
|
|
|
#if defined(HAVE_GETTID) && !defined(HAVE_ANDROID_OS)
|
|
|
|
#define __KERNEL__
|
|
|
|
# include <linux/unistd.h>
|
|
|
|
#ifdef _syscall0
|
|
|
|
_syscall0(pid_t,gettid)
|
|
|
|
#else
|
|
|
|
pid_t gettid() { return syscall(__NR_gettid);}
|
|
|
|
#endif
|
|
|
|
#undef __KERNEL__
|
|
|
|
#endif
|
|
|
|
|
2009-07-08 08:57:42 -07:00
|
|
|
namespace {
|
2009-07-20 15:07:26 -07:00
|
|
|
using android::media::Metadata;
|
2009-07-08 08:57:42 -07:00
|
|
|
using android::status_t;
|
|
|
|
using android::OK;
|
|
|
|
using android::BAD_VALUE;
|
|
|
|
using android::NOT_ENOUGH_DATA;
|
|
|
|
using android::Parcel;
|
|
|
|
|
|
|
|
// Max number of entries in the filter.
|
|
|
|
const int kMaxFilterSize = 64; // I pulled that out of thin air.
|
|
|
|
|
2009-07-20 15:07:26 -07:00
|
|
|
// FIXME: Move all the metadata related function in the Metadata.cpp
|
2009-07-16 16:39:53 -07:00
|
|
|
|
2009-07-08 08:57:42 -07:00
|
|
|
|
|
|
|
// Unmarshall a filter from a Parcel.
|
|
|
|
// Filter format in a parcel:
|
|
|
|
//
|
|
|
|
// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
|
|
|
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
// | number of entries (n) |
|
|
|
|
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
// | metadata type 1 |
|
|
|
|
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
// | metadata type 2 |
|
|
|
|
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
// ....
|
|
|
|
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
// | metadata type n |
|
|
|
|
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
//
|
|
|
|
// @param p Parcel that should start with a filter.
|
|
|
|
// @param[out] filter On exit contains the list of metadata type to be
|
|
|
|
// filtered.
|
|
|
|
// @param[out] status On exit contains the status code to be returned.
|
|
|
|
// @return true if the parcel starts with a valid filter.
|
|
|
|
bool unmarshallFilter(const Parcel& p,
|
2009-07-20 15:07:26 -07:00
|
|
|
Metadata::Filter *filter,
|
2009-07-08 08:57:42 -07:00
|
|
|
status_t *status)
|
|
|
|
{
|
2009-07-10 13:53:06 -07:00
|
|
|
int32_t val;
|
|
|
|
if (p.readInt32(&val) != OK)
|
2009-07-08 08:57:42 -07:00
|
|
|
{
|
|
|
|
LOGE("Failed to read filter's length");
|
|
|
|
*status = NOT_ENOUGH_DATA;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2009-07-10 13:53:06 -07:00
|
|
|
if( val > kMaxFilterSize || val < 0)
|
2009-07-08 08:57:42 -07:00
|
|
|
{
|
2009-07-10 13:53:06 -07:00
|
|
|
LOGE("Invalid filter len %d", val);
|
2009-07-08 08:57:42 -07:00
|
|
|
*status = BAD_VALUE;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2009-07-10 13:53:06 -07:00
|
|
|
const size_t num = val;
|
2009-07-08 08:57:42 -07:00
|
|
|
|
|
|
|
filter->clear();
|
2009-07-10 13:53:06 -07:00
|
|
|
filter->setCapacity(num);
|
2009-07-08 08:57:42 -07:00
|
|
|
|
2009-07-20 15:07:26 -07:00
|
|
|
size_t size = num * sizeof(Metadata::Type);
|
2009-07-08 08:57:42 -07:00
|
|
|
|
2009-07-10 13:53:06 -07:00
|
|
|
|
|
|
|
if (p.dataAvail() < size)
|
2009-07-08 08:57:42 -07:00
|
|
|
{
|
2009-07-10 13:53:06 -07:00
|
|
|
LOGE("Filter too short expected %d but got %d", size, p.dataAvail());
|
2009-07-08 08:57:42 -07:00
|
|
|
*status = NOT_ENOUGH_DATA;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2009-07-20 15:07:26 -07:00
|
|
|
const Metadata::Type *data =
|
|
|
|
static_cast<const Metadata::Type*>(p.readInplace(size));
|
2009-07-08 08:57:42 -07:00
|
|
|
|
2009-07-10 13:53:06 -07:00
|
|
|
if (NULL == data)
|
2009-07-08 08:57:42 -07:00
|
|
|
{
|
|
|
|
LOGE("Filter had no data");
|
|
|
|
*status = BAD_VALUE;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
// TODO: The stl impl of vector would be more efficient here
|
|
|
|
// because it degenerates into a memcpy on pod types. Try to
|
|
|
|
// replace later or use stl::set.
|
2009-07-10 13:53:06 -07:00
|
|
|
for (size_t i = 0; i < num; ++i)
|
2009-07-08 08:57:42 -07:00
|
|
|
{
|
2009-07-10 13:53:06 -07:00
|
|
|
filter->add(*data);
|
2009-07-08 08:57:42 -07:00
|
|
|
++data;
|
|
|
|
}
|
|
|
|
*status = OK;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2009-07-10 13:53:06 -07:00
|
|
|
// @param filter Of metadata type.
|
2009-07-08 08:57:42 -07:00
|
|
|
// @param val To be searched.
|
|
|
|
// @return true if a match was found.
|
2009-07-20 15:07:26 -07:00
|
|
|
bool findMetadata(const Metadata::Filter& filter, const int32_t val)
|
2009-07-08 08:57:42 -07:00
|
|
|
{
|
|
|
|
// Deal with empty and ANY right away
|
|
|
|
if (filter.isEmpty()) return false;
|
2009-07-20 15:07:26 -07:00
|
|
|
if (filter[0] == Metadata::kAny) return true;
|
2009-07-08 08:57:42 -07:00
|
|
|
|
2009-07-10 13:53:06 -07:00
|
|
|
return filter.indexOf(val) >= 0;
|
2009-07-08 08:57:42 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
} // anonymous namespace
|
|
|
|
|
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
namespace android {
|
|
|
|
|
|
|
|
// TODO: Temp hack until we can register players
|
|
|
|
typedef struct {
|
|
|
|
const char *extension;
|
|
|
|
const player_type playertype;
|
|
|
|
} extmap;
|
|
|
|
extmap FILE_EXTS [] = {
|
|
|
|
{".mid", SONIVOX_PLAYER},
|
|
|
|
{".midi", SONIVOX_PLAYER},
|
|
|
|
{".smf", SONIVOX_PLAYER},
|
|
|
|
{".xmf", SONIVOX_PLAYER},
|
|
|
|
{".imy", SONIVOX_PLAYER},
|
|
|
|
{".rtttl", SONIVOX_PLAYER},
|
|
|
|
{".rtx", SONIVOX_PLAYER},
|
|
|
|
{".ota", SONIVOX_PLAYER},
|
|
|
|
{".ogg", VORBIS_PLAYER},
|
|
|
|
{".oga", VORBIS_PLAYER},
|
|
|
|
};
|
|
|
|
|
|
|
|
// TODO: Find real cause of Audio/Video delay in PV framework and remove this workaround
|
2009-09-29 23:12:39 -07:00
|
|
|
/* static */ const uint32_t MediaPlayerService::AudioOutput::kAudioVideoDelayMs = 0;
|
2009-03-03 19:31:44 -08:00
|
|
|
/* static */ int MediaPlayerService::AudioOutput::mMinBufferCount = 4;
|
|
|
|
/* static */ bool MediaPlayerService::AudioOutput::mIsOnEmulator = false;
|
|
|
|
|
|
|
|
void MediaPlayerService::instantiate() {
|
|
|
|
defaultServiceManager()->addService(
|
|
|
|
String16("media.player"), new MediaPlayerService());
|
|
|
|
}
|
|
|
|
|
|
|
|
MediaPlayerService::MediaPlayerService()
|
|
|
|
{
|
|
|
|
LOGV("MediaPlayerService created");
|
|
|
|
mNextConnId = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
MediaPlayerService::~MediaPlayerService()
|
|
|
|
{
|
|
|
|
LOGV("MediaPlayerService destroyed");
|
|
|
|
}
|
|
|
|
|
|
|
|
sp<IMediaRecorder> MediaPlayerService::createMediaRecorder(pid_t pid)
|
|
|
|
{
|
2009-03-21 11:40:18 -07:00
|
|
|
#ifndef NO_OPENCORE
|
2009-10-29 15:46:37 -07:00
|
|
|
sp<MediaRecorderClient> recorder = new MediaRecorderClient(this, pid);
|
|
|
|
wp<MediaRecorderClient> w = recorder;
|
|
|
|
Mutex::Autolock lock(mLock);
|
|
|
|
mMediaRecorderClients.add(w);
|
2009-03-21 11:40:18 -07:00
|
|
|
#else
|
|
|
|
sp<MediaRecorderClient> recorder = NULL;
|
|
|
|
#endif
|
2009-03-03 19:31:44 -08:00
|
|
|
LOGV("Create new media recorder client from pid %d", pid);
|
|
|
|
return recorder;
|
|
|
|
}
|
|
|
|
|
2009-10-29 15:46:37 -07:00
|
|
|
void MediaPlayerService::removeMediaRecorderClient(wp<MediaRecorderClient> client)
|
|
|
|
{
|
|
|
|
Mutex::Autolock lock(mLock);
|
|
|
|
mMediaRecorderClients.remove(client);
|
|
|
|
LOGV("Delete media recorder client");
|
|
|
|
}
|
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
sp<IMediaMetadataRetriever> MediaPlayerService::createMetadataRetriever(pid_t pid)
|
|
|
|
{
|
|
|
|
sp<MetadataRetrieverClient> retriever = new MetadataRetrieverClient(pid);
|
|
|
|
LOGV("Create new media retriever from pid %d", pid);
|
|
|
|
return retriever;
|
|
|
|
}
|
|
|
|
|
|
|
|
sp<IMediaPlayer> MediaPlayerService::create(pid_t pid, const sp<IMediaPlayerClient>& client, const char* url)
|
|
|
|
{
|
|
|
|
int32_t connId = android_atomic_inc(&mNextConnId);
|
|
|
|
sp<Client> c = new Client(this, pid, connId, client);
|
|
|
|
LOGV("Create new client(%d) from pid %d, url=%s, connId=%d", connId, pid, url, connId);
|
|
|
|
if (NO_ERROR != c->setDataSource(url))
|
|
|
|
{
|
|
|
|
c.clear();
|
|
|
|
return c;
|
|
|
|
}
|
|
|
|
wp<Client> w = c;
|
|
|
|
Mutex::Autolock lock(mLock);
|
|
|
|
mClients.add(w);
|
|
|
|
return c;
|
|
|
|
}
|
|
|
|
|
|
|
|
sp<IMediaPlayer> MediaPlayerService::create(pid_t pid, const sp<IMediaPlayerClient>& client,
|
|
|
|
int fd, int64_t offset, int64_t length)
|
|
|
|
{
|
|
|
|
int32_t connId = android_atomic_inc(&mNextConnId);
|
|
|
|
sp<Client> c = new Client(this, pid, connId, client);
|
|
|
|
LOGV("Create new client(%d) from pid %d, fd=%d, offset=%lld, length=%lld",
|
|
|
|
connId, pid, fd, offset, length);
|
|
|
|
if (NO_ERROR != c->setDataSource(fd, offset, length)) {
|
|
|
|
c.clear();
|
|
|
|
} else {
|
|
|
|
wp<Client> w = c;
|
|
|
|
Mutex::Autolock lock(mLock);
|
|
|
|
mClients.add(w);
|
|
|
|
}
|
|
|
|
::close(fd);
|
|
|
|
return c;
|
|
|
|
}
|
|
|
|
|
Squashed commit of the following:
commit 8d179995654c19d9094e51989dc84ed0deba6e04
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 16:30:40 2009 -0700
Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.
commit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 14:06:00 2009 -0700
OMX::list_nodes API, stagefright --list now lists all available OMX components.
commit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 16:04:29 2009 -0700
Reenabled "record" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.
commit d363dd74f611577567c66d25900d6264c306468c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:59:58 2009 -0700
Make non-socket communication in IOMX the default.
commit e89fc82c4fd138c88339887baf72f1d0e67f8660
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:32:33 2009 -0700
The OMX interface now optionally supports communication through the binder only (no sockets involved)
commit 28611de11223fba65299787cdd33f7fdbd6a60a3
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 15:09:13 2009 -0700
Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}
commit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 12:21:46 2009 -0700
Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...
commit ae209a2b5d09caed5dd383c910f238926aaa8fc6
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 09:33:29 2009 -0700
Simple video decoder performance test in "stagefright" commandline tool.
commit 59fe7840111d6f46dd3c48f4950146aed962dbd2
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 16:05:12 2009 -0700
StagefrightPlayer: Properly publish video dimensions by notifying the listener.
commit 51b6598f0e47be5e12d77f1d14e111e71c593638
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 11:38:15 2009 -0700
MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.
commit 31ce53375d748da3e7d30e993ce89dae97fd65ea
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 17:23:37 2009 -0700
Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.
commit a23e312b10631a5d47f5c9831205beac6b84ab36
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 15:10:13 2009 -0700
IGenesisPlayer and friends are no more, java interface now uses local playback instead
of playing inside the media server process.
commit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 13:17:03 2009 -0700
MP3 extractor now supports seeking (only fixed bitrate files currently supported)
commit 96a790405763bfa738d1c6845c99a9fdf579b66f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 7 10:53:54 2009 -0700
Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.
commit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 16:40:02 2009 -0700
Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.
commit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 12:18:29 2009 -0700
Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.
commit 88bffc5ed4033a607080f8777a1c0ec9e3e079de
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 2 12:25:03 2009 -0700
MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.
commit 732aa0a87c7e8d8a10776b275712649954962414
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:58:56 2009 -0700
Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.
commit 669e5944b2fe0542a3b8dba0c441a94503e99fb0
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:43:02 2009 -0700
Proper support for end-of-stream signalling of MediaSources.
commit afb038f2dc594c742e554b2d42b86ffc7434e3fc
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 30 16:48:03 2009 -0700
Support for the "sniffing" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.
commit ed3644b8bd56807e1db4b32433a93a2467f1f3c5
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 13:27:52 2009 -0700
I don't think prepare should automatically start the player.
commit 11eb9b49dc4a0819d366682817cba68613f4fe12
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 11:09:22 2009 -0700
Somewhat better timing information implemented in the MP3Extractor.
commit cab023a1751735c0ed26c8493498a91d8644c6c9
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 25 15:41:56 2009 -0700
Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.
commit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:41:12 2009 -0700
Make sure we only allocate surface buffers if there is video to be played.
commit 7f85e7d92fe81740e102e09905b19354f4ac178e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:19:32 2009 -0700
Clean up a failed merge and implement stub for new API in MediaPlayerBase.
commit f0e9d494a4c03402ea7b54891848ca5a50c421b2
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 15:38:03 2009 -0700
Support yuv420->rgb565 conversion if hardware color conversion is unavailable.
commit 87223248b3099cd5261b94169f84cfd1eba56a8f
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 09:35:56 2009 -0700
Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.
commit e07e651f0325892b797f3eb64dbeca0f317afdfd
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 16:26:42 2009 -0700
Enable assertions in HTTPDataSource.
commit 0dc97adebea1721156880f4b3d5c70f8d50c53b2
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:39 2009 -0700
delete foo.
commit 7f05845dda496e7defee284d32509d127e785784
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:08 2009 -0700
added foo.
commit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 11:44:31 2009 -0700
Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.
commit d6286a6bbca639952491448fa3e609b775a8a814
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 17:11:49 2009 -0700
send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now "works" on the emulator, too.
commit 8d657e004677a7c5dae4479e8519bcaa94c18aad
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 11:58:55 2009 -0700
Instead of erasing codec specific data once it's been output to the omx node, retain the data and just rewind after a stop.
commit 279fede6ba35cbc37c35616c53406bf2c9720202
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 10:58:11 2009 -0700
Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.
commit 0f717f15a6328efd3f34082929cd8ad2351095a9
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 08:44:12 2009 -0700
Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer's notion of time mapping.
commit 0cfb63e33270daf9b215214608ab383f93a31823
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 14:25:48 2009 -0700
Massive rename.
commit 30ed8f476c4431a5275538958b3e281bd17d5eab
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 13:52:41 2009 -0700
send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.
commit b832d04011b2dd8a9632eb7e575bfe1addd1270d
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:21:17 2009 -0700
MediaBuffers can now be "clone()", they sit on top of the same data but have their own range and metadata. Once a clone's refcount drops to 0 it decrements the refcount on the original buffer.
commit 4e944672808bdf1ed40a69f3f602f93ebf7b4049
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:01:01 2009 -0700
Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.
commit ddb7529b4de4828db51432bd405fddd76cfa3b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 16:30:25 2009 -0700
More fudging with A/V sync...
commit 1e5a4d8df08237b58c06c6527a33152ae931addf
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 11:54:20 2009 -0700
API cleanup of MediaSource. Got rid of MediaRing as it really doesn't serve a purpose if OMX decoders are used.
commit 0953c65232aa9753d17d2e25c5f5526eb810cf13
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 16:59:19 2009 -0700
Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.
commit 2085b8ea9484a21fa11f94194a27405d413aeecc
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 10:17:01 2009 -0700
Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.
commit 471f143458a8a0d93cb1bf9568c63c3967279dc6
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 17:32:27 2009 -0700
Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.
commit 4010d371dbe62ce4971e13437776cba32cb0bb3d
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 16:01:07 2009 -0700
Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.
commit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 15:33:58 2009 -0700
Change the TimeSource interface's APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.
commit 08bb46fa61d12e852a424698ddb0c90700328f6e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 11:57:24 2009 -0700
Using framework's Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.
commit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 17:12:03 2009 -0700
MediaSources now publish their format.
commit 7e429a26c57bf936e1a08035d2d11839f9f00310
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 16:38:29 2009 -0700
MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.
commit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 14:39:55 2009 -0700
Sync sample seek support.
commit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 13:51:11 2009 -0700
Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn't. Fixes a problem with seek.
commit e57781d3b2c985a74cd8b60e7c8f2d576459d038
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 10:52:20 2009 -0700
First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.
commit 0551cd78fda78bf66877fb26c5a55e5ae23d8367
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 16:23:38 2009 -0700
Preliminary support for camera input.
commit f8ebafa65d10d5a06944de6b2e2992a33121b857
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 12:13:47 2009 -0700
Allow NativeMediaPlayer access to Surface's getISurface() method.
commit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:38:25 2009 -0700
Header files are now in their own genesis2 hierarchy below frameworks/base/include.
commit f49b8b234b8f6ce83148787eef540dd920f04aa6
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:22:03 2009 -0700
moved MPEG4Writer into libgenesis2.
commit 5224254919dac4728677335ea60429fa16f518b4
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:13:38 2009 -0700
Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.
commit f9a9d84f7e0465ef5d1938a068655ba39527cf99
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 16:43:11 2009 -0700
Support for getPosition() and getDuration().
commit 3206cc5140bcbc88be039f8d94b954af63e69752
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 15:37:45 2009 -0700
Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()
commit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 13:49:50 2009 -0700
Proper disconnection from the OMX service.
commit cdcf47a2c31599109ee42277c7fa14af3c600091
Author: Andreas Huber <andih@google.com>
Date: Tue May 26 17:27:06 2009 -0700
New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.
commit 0586af20ac9ae0403dd190bafd290b0f90549723
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 15:53:19 2009 -0700
Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.
commit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 13:35:30 2009 -0700
Support for http URIs in MediaPlayer, compensate for AudioTrack latency.
commit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 11:33:25 2009 -0700
Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don't shutdown cleanly within a second.
commit 1f0268f4f14ad5215668f34e06a420850174d665
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:33:16 2009 -0700
and foo.txt is gone again.
commit 0feca4e0919f345704d78ec78894bac5027bd5ed
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:28:49 2009 -0700
added foo.txt
commit 9c7d04b35cdc895a2de3602dc46522f608bd205f
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:28:04 2009 -0700
delete foo again
commit fec3ca1720992cce51b9a92b86b945da88a6b16c
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:27:45 2009 -0700
weird
commit 30a6571302333146e537e537a3a8986245cca87c
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:18:55 2009 -0700
reverse test
commit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:18:22 2009 -0700
test
commit a9eeafec6e46072cac41e54ebdbd153cb7ae7518
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 16:37:50 2009 -0700
Use the video ring again for now.
commit e05ff3d3c1c4f89ef499a2b172138a775fd694e3
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 15:42:19 2009 -0700
Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.
commit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 09:56:11 2009 -0700
Fix the build, all binder-related headers have moved and there's a new library libbinde
r to link against now.
commit 23e0a24404d16c898c2c6b3c7495ad303844bc71
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 08:42:04 2009 -0700
Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss & friends) not currently working.
commit 9cd77adb1ac194197364ffad00a0d7215f458e1a
Author: Andreas Huber <andih@google.com>
Date: Wed May 20 12:31:45 2009 -0700
New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.
commit 5c510fb55ffed7ec25305999ed9b6c1eec48d503
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 15:40:06 2009 -0700
Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.
commit f6c7a2040b8eb43326621f12c3a936e09b3a70e3
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 11:03:04 2009 -0700
The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.
commit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac
Author: Andreas Huber <andih@google.com>
Date: Thu May 14 12:39:34 2009 -0700
dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.
commit 380369f54a8027cbc9349305184d6bf527a24efe
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 17:32:00 2009 -0700
Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.
commit b5cada56b9089a23e0c461352a97dc71e08b424d
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 12:11:06 2009 -0700
Introduction of TimeSource class, clean shutdown of OMX Nodes.
commit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 17:11:56 2009 -0700
Helper classes MediaRing and MediaPlayer.
commit 9aaed8739b4bb941473da367fb88f63224d2f1b7
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 14:19:18 2009 -0700
Using mmap to map a file instead of going through FILE* improves performance, who knew?
commit ad097a78bbd002c59193ffdc39b64935928426c7
Author: Andreas Huber <andih@google.com>
Date: Mon May 11 16:42:42 2009 -0700
Added a performance test, refactored AudioDecoder a little.
commit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 16:19:29 2009 -0700
No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.
commit 858955b42c29b8033841a8caaa56c2a449810ef3
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 14:02:38 2009 -0700
Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.
commit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 13:21:45 2009 -0700
Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes
commit 3941fcf87a48dda81683df727dfb1381f62d9184
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 16:37:45 2009 -0700
some refactoring. Most streams play now.
commit d3152862840d4dd39068e5197bec8674f3d55dd5
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 15:37:32 2009 -0700
Misc. changes to support H264 decoding using the qcom hardware decoder
commit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 09:28:18 2009 -0700
Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.
commit fe6a50943f885e065d4061aa727a54417e9f36db
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 14:18:27 2009 -0700
Refactored commandline app instantiation of the decoder.
commit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 10:41:14 2009 -0700
Proper audio/video synchronization.
commit 569ee3a23f600f4b6b87c6178c0223b06e97f201
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 09:17:20 2009 -0700
Preliminary support for timestamps.
commit e4e302a89207550d8a7170d8c0afbd9c15047c84
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:13:12 2009 -0700
Another quick hack job to make CachingDataSource thread-safe as well.
commit dfb376a58bd7c09aa04e89558186fcfe13fe696c
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:08:14 2009 -0700
Quick rushjob to make FileSource and SampleTable thread safe.
commit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 17:22:04 2009 -0700
Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.
commit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 09:26:42 2009 -0700
Getting rid of old sample code to drive the OMXNode binder interface.
commit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 16:21:11 2009 -0700
Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder
commit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 15:56:19 2009 -0700
Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)
commit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 11:52:48 2009 -0700
Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.
commit 1470427866b0d3e0ce6848b4edc01c13a09be289
Author: Andreas Huber <andih@google.com>
Date: Thu Apr 30 15:19:31 2009 -0700
Another checkpoint, amr decoding now functional.
commit e612d044439f56331b6a2bc4a88622e04d4d42e7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 12:11:29 2009 -0700
string wrapper around String8, various fixes, shoutcast now works again.
commit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 11:08:18 2009 -0700
Initial check-in of OMXNode binder interface.
commit 7880d2957f74c0d7fba7679431ff5adb3780543b
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 10:05:01 2009 -0700
Initial check-in of both libgenesis2 and the genesis2 commandline tool.
2009-07-14 16:56:47 -07:00
|
|
|
sp<IOMX> MediaPlayerService::createOMX() {
|
|
|
|
return new OMX;
|
|
|
|
}
|
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
status_t MediaPlayerService::AudioCache::dump(int fd, const Vector<String16>& args) const
|
|
|
|
{
|
|
|
|
const size_t SIZE = 256;
|
|
|
|
char buffer[SIZE];
|
|
|
|
String8 result;
|
|
|
|
|
|
|
|
result.append(" AudioCache\n");
|
|
|
|
if (mHeap != 0) {
|
|
|
|
snprintf(buffer, 255, " heap base(%p), size(%d), flags(%d), device(%s)\n",
|
|
|
|
mHeap->getBase(), mHeap->getSize(), mHeap->getFlags(), mHeap->getDevice());
|
|
|
|
result.append(buffer);
|
|
|
|
}
|
|
|
|
snprintf(buffer, 255, " msec per frame(%f), channel count(%d), format(%d), frame count(%ld)\n",
|
|
|
|
mMsecsPerFrame, mChannelCount, mFormat, mFrameCount);
|
|
|
|
result.append(buffer);
|
|
|
|
snprintf(buffer, 255, " sample rate(%d), size(%d), error(%d), command complete(%s)\n",
|
|
|
|
mSampleRate, mSize, mError, mCommandComplete?"true":"false");
|
|
|
|
result.append(buffer);
|
|
|
|
::write(fd, result.string(), result.size());
|
|
|
|
return NO_ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t MediaPlayerService::AudioOutput::dump(int fd, const Vector<String16>& args) const
|
|
|
|
{
|
|
|
|
const size_t SIZE = 256;
|
|
|
|
char buffer[SIZE];
|
|
|
|
String8 result;
|
|
|
|
|
|
|
|
result.append(" AudioOutput\n");
|
|
|
|
snprintf(buffer, 255, " stream type(%d), left - right volume(%f, %f)\n",
|
|
|
|
mStreamType, mLeftVolume, mRightVolume);
|
|
|
|
result.append(buffer);
|
|
|
|
snprintf(buffer, 255, " msec per frame(%f), latency (%d)\n",
|
|
|
|
mMsecsPerFrame, mLatency);
|
|
|
|
result.append(buffer);
|
|
|
|
::write(fd, result.string(), result.size());
|
|
|
|
if (mTrack != 0) {
|
|
|
|
mTrack->dump(fd, args);
|
|
|
|
}
|
|
|
|
return NO_ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t MediaPlayerService::Client::dump(int fd, const Vector<String16>& args) const
|
|
|
|
{
|
|
|
|
const size_t SIZE = 256;
|
|
|
|
char buffer[SIZE];
|
|
|
|
String8 result;
|
|
|
|
result.append(" Client\n");
|
|
|
|
snprintf(buffer, 255, " pid(%d), connId(%d), status(%d), looping(%s)\n",
|
|
|
|
mPid, mConnId, mStatus, mLoop?"true": "false");
|
|
|
|
result.append(buffer);
|
|
|
|
write(fd, result.string(), result.size());
|
|
|
|
if (mAudioOutput != 0) {
|
|
|
|
mAudioOutput->dump(fd, args);
|
|
|
|
}
|
|
|
|
write(fd, "\n", 1);
|
|
|
|
return NO_ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int myTid() {
|
|
|
|
#ifdef HAVE_GETTID
|
|
|
|
return gettid();
|
|
|
|
#else
|
|
|
|
return getpid();
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
#if defined(__arm__)
|
|
|
|
extern "C" void get_malloc_leak_info(uint8_t** info, size_t* overallSize,
|
|
|
|
size_t* infoSize, size_t* totalMemory, size_t* backtraceSize);
|
|
|
|
extern "C" void free_malloc_leak_info(uint8_t* info);
|
|
|
|
|
|
|
|
void memStatus(int fd, const Vector<String16>& args)
|
|
|
|
{
|
|
|
|
const size_t SIZE = 256;
|
|
|
|
char buffer[SIZE];
|
|
|
|
String8 result;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
size_t size;
|
|
|
|
size_t dups;
|
|
|
|
intptr_t * backtrace;
|
|
|
|
} AllocEntry;
|
|
|
|
|
|
|
|
uint8_t *info = NULL;
|
|
|
|
size_t overallSize = 0;
|
|
|
|
size_t infoSize = 0;
|
|
|
|
size_t totalMemory = 0;
|
|
|
|
size_t backtraceSize = 0;
|
|
|
|
|
|
|
|
get_malloc_leak_info(&info, &overallSize, &infoSize, &totalMemory, &backtraceSize);
|
|
|
|
if (info) {
|
|
|
|
uint8_t *ptr = info;
|
|
|
|
size_t count = overallSize / infoSize;
|
|
|
|
|
|
|
|
snprintf(buffer, SIZE, " Allocation count %i\n", count);
|
|
|
|
result.append(buffer);
|
|
|
|
|
|
|
|
AllocEntry * entries = new AllocEntry[count];
|
|
|
|
|
|
|
|
for (size_t i = 0; i < count; i++) {
|
|
|
|
// Each entry should be size_t, size_t, intptr_t[backtraceSize]
|
|
|
|
AllocEntry *e = &entries[i];
|
|
|
|
|
|
|
|
e->size = *reinterpret_cast<size_t *>(ptr);
|
|
|
|
ptr += sizeof(size_t);
|
|
|
|
|
|
|
|
e->dups = *reinterpret_cast<size_t *>(ptr);
|
|
|
|
ptr += sizeof(size_t);
|
|
|
|
|
|
|
|
e->backtrace = reinterpret_cast<intptr_t *>(ptr);
|
|
|
|
ptr += sizeof(intptr_t) * backtraceSize;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Now we need to sort the entries. They come sorted by size but
|
|
|
|
// not by stack trace which causes problems using diff.
|
|
|
|
bool moved;
|
|
|
|
do {
|
|
|
|
moved = false;
|
|
|
|
for (size_t i = 0; i < (count - 1); i++) {
|
|
|
|
AllocEntry *e1 = &entries[i];
|
|
|
|
AllocEntry *e2 = &entries[i+1];
|
|
|
|
|
|
|
|
bool swap = e1->size < e2->size;
|
|
|
|
if (e1->size == e2->size) {
|
|
|
|
for(size_t j = 0; j < backtraceSize; j++) {
|
|
|
|
if (e1->backtrace[j] == e2->backtrace[j]) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
swap = e1->backtrace[j] < e2->backtrace[j];
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (swap) {
|
|
|
|
AllocEntry t = entries[i];
|
|
|
|
entries[i] = entries[i+1];
|
|
|
|
entries[i+1] = t;
|
|
|
|
moved = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} while (moved);
|
|
|
|
|
|
|
|
for (size_t i = 0; i < count; i++) {
|
|
|
|
AllocEntry *e = &entries[i];
|
|
|
|
|
|
|
|
snprintf(buffer, SIZE, "size %8i, dup %4i", e->size, e->dups);
|
|
|
|
result.append(buffer);
|
|
|
|
for (size_t ct = 0; (ct < backtraceSize) && e->backtrace[ct]; ct++) {
|
|
|
|
if (ct) {
|
|
|
|
result.append(", ");
|
|
|
|
}
|
|
|
|
snprintf(buffer, SIZE, "0x%08x", e->backtrace[ct]);
|
|
|
|
result.append(buffer);
|
|
|
|
}
|
|
|
|
result.append("\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
delete[] entries;
|
|
|
|
free_malloc_leak_info(info);
|
|
|
|
}
|
|
|
|
|
|
|
|
write(fd, result.string(), result.size());
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
status_t MediaPlayerService::dump(int fd, const Vector<String16>& args)
|
|
|
|
{
|
|
|
|
const size_t SIZE = 256;
|
|
|
|
char buffer[SIZE];
|
|
|
|
String8 result;
|
|
|
|
if (checkCallingPermission(String16("android.permission.DUMP")) == false) {
|
|
|
|
snprintf(buffer, SIZE, "Permission Denial: "
|
|
|
|
"can't dump MediaPlayerService from pid=%d, uid=%d\n",
|
|
|
|
IPCThreadState::self()->getCallingPid(),
|
|
|
|
IPCThreadState::self()->getCallingUid());
|
|
|
|
result.append(buffer);
|
|
|
|
} else {
|
|
|
|
Mutex::Autolock lock(mLock);
|
|
|
|
for (int i = 0, n = mClients.size(); i < n; ++i) {
|
|
|
|
sp<Client> c = mClients[i].promote();
|
|
|
|
if (c != 0) c->dump(fd, args);
|
|
|
|
}
|
2009-10-29 15:46:37 -07:00
|
|
|
for (int i = 0, n = mMediaRecorderClients.size(); i < n; ++i) {
|
|
|
|
result.append(" MediaRecorderClient\n");
|
|
|
|
sp<MediaRecorderClient> c = mMediaRecorderClients[i].promote();
|
|
|
|
snprintf(buffer, 255, " pid(%d)\n\n", c->mPid);
|
|
|
|
result.append(buffer);
|
|
|
|
}
|
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
result.append(" Files opened and/or mapped:\n");
|
|
|
|
snprintf(buffer, SIZE, "/proc/%d/maps", myTid());
|
|
|
|
FILE *f = fopen(buffer, "r");
|
|
|
|
if (f) {
|
|
|
|
while (!feof(f)) {
|
|
|
|
fgets(buffer, SIZE, f);
|
|
|
|
if (strstr(buffer, " /sdcard/") ||
|
|
|
|
strstr(buffer, " /system/sounds/") ||
|
|
|
|
strstr(buffer, " /system/media/")) {
|
|
|
|
result.append(" ");
|
|
|
|
result.append(buffer);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
fclose(f);
|
|
|
|
} else {
|
|
|
|
result.append("couldn't open ");
|
|
|
|
result.append(buffer);
|
|
|
|
result.append("\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
snprintf(buffer, SIZE, "/proc/%d/fd", myTid());
|
|
|
|
DIR *d = opendir(buffer);
|
|
|
|
if (d) {
|
|
|
|
struct dirent *ent;
|
|
|
|
while((ent = readdir(d)) != NULL) {
|
|
|
|
if (strcmp(ent->d_name,".") && strcmp(ent->d_name,"..")) {
|
|
|
|
snprintf(buffer, SIZE, "/proc/%d/fd/%s", myTid(), ent->d_name);
|
|
|
|
struct stat s;
|
|
|
|
if (lstat(buffer, &s) == 0) {
|
|
|
|
if ((s.st_mode & S_IFMT) == S_IFLNK) {
|
|
|
|
char linkto[256];
|
|
|
|
int len = readlink(buffer, linkto, sizeof(linkto));
|
|
|
|
if(len > 0) {
|
|
|
|
if(len > 255) {
|
|
|
|
linkto[252] = '.';
|
|
|
|
linkto[253] = '.';
|
|
|
|
linkto[254] = '.';
|
|
|
|
linkto[255] = 0;
|
|
|
|
} else {
|
|
|
|
linkto[len] = 0;
|
|
|
|
}
|
|
|
|
if (strstr(linkto, "/sdcard/") == linkto ||
|
|
|
|
strstr(linkto, "/system/sounds/") == linkto ||
|
|
|
|
strstr(linkto, "/system/media/") == linkto) {
|
|
|
|
result.append(" ");
|
|
|
|
result.append(buffer);
|
|
|
|
result.append(" -> ");
|
|
|
|
result.append(linkto);
|
|
|
|
result.append("\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
result.append(" unexpected type for ");
|
|
|
|
result.append(buffer);
|
|
|
|
result.append("\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
closedir(d);
|
|
|
|
} else {
|
|
|
|
result.append("couldn't open ");
|
|
|
|
result.append(buffer);
|
|
|
|
result.append("\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
#if defined(__arm__)
|
|
|
|
bool dumpMem = false;
|
|
|
|
for (size_t i = 0; i < args.size(); i++) {
|
|
|
|
if (args[i] == String16("-m")) {
|
|
|
|
dumpMem = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (dumpMem) {
|
|
|
|
memStatus(fd, args);
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
write(fd, result.string(), result.size());
|
|
|
|
return NO_ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
void MediaPlayerService::removeClient(wp<Client> client)
|
|
|
|
{
|
|
|
|
Mutex::Autolock lock(mLock);
|
|
|
|
mClients.remove(client);
|
|
|
|
}
|
|
|
|
|
|
|
|
MediaPlayerService::Client::Client(const sp<MediaPlayerService>& service, pid_t pid,
|
|
|
|
int32_t connId, const sp<IMediaPlayerClient>& client)
|
|
|
|
{
|
|
|
|
LOGV("Client(%d) constructor", connId);
|
|
|
|
mPid = pid;
|
|
|
|
mConnId = connId;
|
|
|
|
mService = service;
|
|
|
|
mClient = client;
|
|
|
|
mLoop = false;
|
|
|
|
mStatus = NO_INIT;
|
|
|
|
#if CALLBACK_ANTAGONIZER
|
|
|
|
LOGD("create Antagonizer");
|
|
|
|
mAntagonizer = new Antagonizer(notify, this);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
MediaPlayerService::Client::~Client()
|
|
|
|
{
|
|
|
|
LOGV("Client(%d) destructor pid = %d", mConnId, mPid);
|
|
|
|
mAudioOutput.clear();
|
|
|
|
wp<Client> client(this);
|
|
|
|
disconnect();
|
|
|
|
mService->removeClient(client);
|
|
|
|
}
|
|
|
|
|
|
|
|
void MediaPlayerService::Client::disconnect()
|
|
|
|
{
|
|
|
|
LOGV("disconnect(%d) from pid %d", mConnId, mPid);
|
|
|
|
// grab local reference and clear main reference to prevent future
|
|
|
|
// access to object
|
|
|
|
sp<MediaPlayerBase> p;
|
|
|
|
{
|
|
|
|
Mutex::Autolock l(mLock);
|
|
|
|
p = mPlayer;
|
|
|
|
}
|
2009-03-24 17:57:12 -07:00
|
|
|
mClient.clear();
|
Squashed commit of the following:
commit 8d179995654c19d9094e51989dc84ed0deba6e04
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 16:30:40 2009 -0700
Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.
commit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 14:06:00 2009 -0700
OMX::list_nodes API, stagefright --list now lists all available OMX components.
commit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 16:04:29 2009 -0700
Reenabled "record" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.
commit d363dd74f611577567c66d25900d6264c306468c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:59:58 2009 -0700
Make non-socket communication in IOMX the default.
commit e89fc82c4fd138c88339887baf72f1d0e67f8660
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:32:33 2009 -0700
The OMX interface now optionally supports communication through the binder only (no sockets involved)
commit 28611de11223fba65299787cdd33f7fdbd6a60a3
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 15:09:13 2009 -0700
Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}
commit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 12:21:46 2009 -0700
Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...
commit ae209a2b5d09caed5dd383c910f238926aaa8fc6
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 09:33:29 2009 -0700
Simple video decoder performance test in "stagefright" commandline tool.
commit 59fe7840111d6f46dd3c48f4950146aed962dbd2
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 16:05:12 2009 -0700
StagefrightPlayer: Properly publish video dimensions by notifying the listener.
commit 51b6598f0e47be5e12d77f1d14e111e71c593638
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 11:38:15 2009 -0700
MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.
commit 31ce53375d748da3e7d30e993ce89dae97fd65ea
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 17:23:37 2009 -0700
Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.
commit a23e312b10631a5d47f5c9831205beac6b84ab36
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 15:10:13 2009 -0700
IGenesisPlayer and friends are no more, java interface now uses local playback instead
of playing inside the media server process.
commit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 13:17:03 2009 -0700
MP3 extractor now supports seeking (only fixed bitrate files currently supported)
commit 96a790405763bfa738d1c6845c99a9fdf579b66f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 7 10:53:54 2009 -0700
Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.
commit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 16:40:02 2009 -0700
Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.
commit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 12:18:29 2009 -0700
Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.
commit 88bffc5ed4033a607080f8777a1c0ec9e3e079de
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 2 12:25:03 2009 -0700
MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.
commit 732aa0a87c7e8d8a10776b275712649954962414
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:58:56 2009 -0700
Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.
commit 669e5944b2fe0542a3b8dba0c441a94503e99fb0
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:43:02 2009 -0700
Proper support for end-of-stream signalling of MediaSources.
commit afb038f2dc594c742e554b2d42b86ffc7434e3fc
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 30 16:48:03 2009 -0700
Support for the "sniffing" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.
commit ed3644b8bd56807e1db4b32433a93a2467f1f3c5
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 13:27:52 2009 -0700
I don't think prepare should automatically start the player.
commit 11eb9b49dc4a0819d366682817cba68613f4fe12
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 11:09:22 2009 -0700
Somewhat better timing information implemented in the MP3Extractor.
commit cab023a1751735c0ed26c8493498a91d8644c6c9
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 25 15:41:56 2009 -0700
Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.
commit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:41:12 2009 -0700
Make sure we only allocate surface buffers if there is video to be played.
commit 7f85e7d92fe81740e102e09905b19354f4ac178e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:19:32 2009 -0700
Clean up a failed merge and implement stub for new API in MediaPlayerBase.
commit f0e9d494a4c03402ea7b54891848ca5a50c421b2
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 15:38:03 2009 -0700
Support yuv420->rgb565 conversion if hardware color conversion is unavailable.
commit 87223248b3099cd5261b94169f84cfd1eba56a8f
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 09:35:56 2009 -0700
Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.
commit e07e651f0325892b797f3eb64dbeca0f317afdfd
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 16:26:42 2009 -0700
Enable assertions in HTTPDataSource.
commit 0dc97adebea1721156880f4b3d5c70f8d50c53b2
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:39 2009 -0700
delete foo.
commit 7f05845dda496e7defee284d32509d127e785784
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:08 2009 -0700
added foo.
commit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 11:44:31 2009 -0700
Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.
commit d6286a6bbca639952491448fa3e609b775a8a814
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 17:11:49 2009 -0700
send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now "works" on the emulator, too.
commit 8d657e004677a7c5dae4479e8519bcaa94c18aad
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 11:58:55 2009 -0700
Instead of erasing codec specific data once it's been output to the omx node, retain the data and just rewind after a stop.
commit 279fede6ba35cbc37c35616c53406bf2c9720202
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 10:58:11 2009 -0700
Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.
commit 0f717f15a6328efd3f34082929cd8ad2351095a9
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 08:44:12 2009 -0700
Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer's notion of time mapping.
commit 0cfb63e33270daf9b215214608ab383f93a31823
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 14:25:48 2009 -0700
Massive rename.
commit 30ed8f476c4431a5275538958b3e281bd17d5eab
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 13:52:41 2009 -0700
send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.
commit b832d04011b2dd8a9632eb7e575bfe1addd1270d
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:21:17 2009 -0700
MediaBuffers can now be "clone()", they sit on top of the same data but have their own range and metadata. Once a clone's refcount drops to 0 it decrements the refcount on the original buffer.
commit 4e944672808bdf1ed40a69f3f602f93ebf7b4049
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:01:01 2009 -0700
Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.
commit ddb7529b4de4828db51432bd405fddd76cfa3b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 16:30:25 2009 -0700
More fudging with A/V sync...
commit 1e5a4d8df08237b58c06c6527a33152ae931addf
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 11:54:20 2009 -0700
API cleanup of MediaSource. Got rid of MediaRing as it really doesn't serve a purpose if OMX decoders are used.
commit 0953c65232aa9753d17d2e25c5f5526eb810cf13
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 16:59:19 2009 -0700
Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.
commit 2085b8ea9484a21fa11f94194a27405d413aeecc
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 10:17:01 2009 -0700
Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.
commit 471f143458a8a0d93cb1bf9568c63c3967279dc6
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 17:32:27 2009 -0700
Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.
commit 4010d371dbe62ce4971e13437776cba32cb0bb3d
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 16:01:07 2009 -0700
Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.
commit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 15:33:58 2009 -0700
Change the TimeSource interface's APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.
commit 08bb46fa61d12e852a424698ddb0c90700328f6e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 11:57:24 2009 -0700
Using framework's Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.
commit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 17:12:03 2009 -0700
MediaSources now publish their format.
commit 7e429a26c57bf936e1a08035d2d11839f9f00310
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 16:38:29 2009 -0700
MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.
commit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 14:39:55 2009 -0700
Sync sample seek support.
commit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 13:51:11 2009 -0700
Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn't. Fixes a problem with seek.
commit e57781d3b2c985a74cd8b60e7c8f2d576459d038
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 10:52:20 2009 -0700
First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.
commit 0551cd78fda78bf66877fb26c5a55e5ae23d8367
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 16:23:38 2009 -0700
Preliminary support for camera input.
commit f8ebafa65d10d5a06944de6b2e2992a33121b857
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 12:13:47 2009 -0700
Allow NativeMediaPlayer access to Surface's getISurface() method.
commit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:38:25 2009 -0700
Header files are now in their own genesis2 hierarchy below frameworks/base/include.
commit f49b8b234b8f6ce83148787eef540dd920f04aa6
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:22:03 2009 -0700
moved MPEG4Writer into libgenesis2.
commit 5224254919dac4728677335ea60429fa16f518b4
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:13:38 2009 -0700
Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.
commit f9a9d84f7e0465ef5d1938a068655ba39527cf99
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 16:43:11 2009 -0700
Support for getPosition() and getDuration().
commit 3206cc5140bcbc88be039f8d94b954af63e69752
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 15:37:45 2009 -0700
Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()
commit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 13:49:50 2009 -0700
Proper disconnection from the OMX service.
commit cdcf47a2c31599109ee42277c7fa14af3c600091
Author: Andreas Huber <andih@google.com>
Date: Tue May 26 17:27:06 2009 -0700
New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.
commit 0586af20ac9ae0403dd190bafd290b0f90549723
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 15:53:19 2009 -0700
Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.
commit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 13:35:30 2009 -0700
Support for http URIs in MediaPlayer, compensate for AudioTrack latency.
commit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 11:33:25 2009 -0700
Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don't shutdown cleanly within a second.
commit 1f0268f4f14ad5215668f34e06a420850174d665
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:33:16 2009 -0700
and foo.txt is gone again.
commit 0feca4e0919f345704d78ec78894bac5027bd5ed
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:28:49 2009 -0700
added foo.txt
commit 9c7d04b35cdc895a2de3602dc46522f608bd205f
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:28:04 2009 -0700
delete foo again
commit fec3ca1720992cce51b9a92b86b945da88a6b16c
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:27:45 2009 -0700
weird
commit 30a6571302333146e537e537a3a8986245cca87c
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:18:55 2009 -0700
reverse test
commit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:18:22 2009 -0700
test
commit a9eeafec6e46072cac41e54ebdbd153cb7ae7518
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 16:37:50 2009 -0700
Use the video ring again for now.
commit e05ff3d3c1c4f89ef499a2b172138a775fd694e3
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 15:42:19 2009 -0700
Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.
commit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 09:56:11 2009 -0700
Fix the build, all binder-related headers have moved and there's a new library libbinde
r to link against now.
commit 23e0a24404d16c898c2c6b3c7495ad303844bc71
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 08:42:04 2009 -0700
Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss & friends) not currently working.
commit 9cd77adb1ac194197364ffad00a0d7215f458e1a
Author: Andreas Huber <andih@google.com>
Date: Wed May 20 12:31:45 2009 -0700
New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.
commit 5c510fb55ffed7ec25305999ed9b6c1eec48d503
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 15:40:06 2009 -0700
Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.
commit f6c7a2040b8eb43326621f12c3a936e09b3a70e3
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 11:03:04 2009 -0700
The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.
commit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac
Author: Andreas Huber <andih@google.com>
Date: Thu May 14 12:39:34 2009 -0700
dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.
commit 380369f54a8027cbc9349305184d6bf527a24efe
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 17:32:00 2009 -0700
Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.
commit b5cada56b9089a23e0c461352a97dc71e08b424d
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 12:11:06 2009 -0700
Introduction of TimeSource class, clean shutdown of OMX Nodes.
commit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 17:11:56 2009 -0700
Helper classes MediaRing and MediaPlayer.
commit 9aaed8739b4bb941473da367fb88f63224d2f1b7
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 14:19:18 2009 -0700
Using mmap to map a file instead of going through FILE* improves performance, who knew?
commit ad097a78bbd002c59193ffdc39b64935928426c7
Author: Andreas Huber <andih@google.com>
Date: Mon May 11 16:42:42 2009 -0700
Added a performance test, refactored AudioDecoder a little.
commit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 16:19:29 2009 -0700
No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.
commit 858955b42c29b8033841a8caaa56c2a449810ef3
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 14:02:38 2009 -0700
Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.
commit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 13:21:45 2009 -0700
Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes
commit 3941fcf87a48dda81683df727dfb1381f62d9184
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 16:37:45 2009 -0700
some refactoring. Most streams play now.
commit d3152862840d4dd39068e5197bec8674f3d55dd5
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 15:37:32 2009 -0700
Misc. changes to support H264 decoding using the qcom hardware decoder
commit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 09:28:18 2009 -0700
Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.
commit fe6a50943f885e065d4061aa727a54417e9f36db
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 14:18:27 2009 -0700
Refactored commandline app instantiation of the decoder.
commit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 10:41:14 2009 -0700
Proper audio/video synchronization.
commit 569ee3a23f600f4b6b87c6178c0223b06e97f201
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 09:17:20 2009 -0700
Preliminary support for timestamps.
commit e4e302a89207550d8a7170d8c0afbd9c15047c84
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:13:12 2009 -0700
Another quick hack job to make CachingDataSource thread-safe as well.
commit dfb376a58bd7c09aa04e89558186fcfe13fe696c
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:08:14 2009 -0700
Quick rushjob to make FileSource and SampleTable thread safe.
commit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 17:22:04 2009 -0700
Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.
commit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 09:26:42 2009 -0700
Getting rid of old sample code to drive the OMXNode binder interface.
commit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 16:21:11 2009 -0700
Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder
commit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 15:56:19 2009 -0700
Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)
commit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 11:52:48 2009 -0700
Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.
commit 1470427866b0d3e0ce6848b4edc01c13a09be289
Author: Andreas Huber <andih@google.com>
Date: Thu Apr 30 15:19:31 2009 -0700
Another checkpoint, amr decoding now functional.
commit e612d044439f56331b6a2bc4a88622e04d4d42e7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 12:11:29 2009 -0700
string wrapper around String8, various fixes, shoutcast now works again.
commit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 11:08:18 2009 -0700
Initial check-in of OMXNode binder interface.
commit 7880d2957f74c0d7fba7679431ff5adb3780543b
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 10:05:01 2009 -0700
Initial check-in of both libgenesis2 and the genesis2 commandline tool.
2009-07-14 16:56:47 -07:00
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
mPlayer.clear();
|
|
|
|
|
|
|
|
// clear the notification to prevent callbacks to dead client
|
|
|
|
// and reset the player. We assume the player will serialize
|
|
|
|
// access to itself if necessary.
|
|
|
|
if (p != 0) {
|
|
|
|
p->setNotifyCallback(0, 0);
|
|
|
|
#if CALLBACK_ANTAGONIZER
|
|
|
|
LOGD("kill Antagonizer");
|
|
|
|
mAntagonizer->kill();
|
|
|
|
#endif
|
|
|
|
p->reset();
|
|
|
|
}
|
|
|
|
|
|
|
|
IPCThreadState::self()->flushCommands();
|
|
|
|
}
|
|
|
|
|
2009-08-07 09:30:32 -07:00
|
|
|
static player_type getDefaultPlayerType() {
|
2009-09-11 09:54:52 -07:00
|
|
|
#if BUILD_WITH_FULL_STAGEFRIGHT
|
2009-08-07 09:30:32 -07:00
|
|
|
char value[PROPERTY_VALUE_MAX];
|
|
|
|
if (property_get("media.stagefright.enable-player", value, NULL)
|
|
|
|
&& (!strcmp(value, "1") || !strcasecmp(value, "true"))) {
|
|
|
|
return STAGEFRIGHT_PLAYER;
|
|
|
|
}
|
2009-09-11 09:54:52 -07:00
|
|
|
#endif
|
2009-08-07 09:30:32 -07:00
|
|
|
|
|
|
|
return PV_PLAYER;
|
|
|
|
}
|
|
|
|
|
2009-09-06 14:29:45 -07:00
|
|
|
player_type getPlayerType(int fd, int64_t offset, int64_t length)
|
2009-03-03 19:31:44 -08:00
|
|
|
{
|
|
|
|
char buf[20];
|
|
|
|
lseek(fd, offset, SEEK_SET);
|
|
|
|
read(fd, buf, sizeof(buf));
|
|
|
|
lseek(fd, offset, SEEK_SET);
|
|
|
|
|
|
|
|
long ident = *((long*)buf);
|
|
|
|
|
|
|
|
// Ogg vorbis?
|
|
|
|
if (ident == 0x5367674f) // 'OggS'
|
|
|
|
return VORBIS_PLAYER;
|
|
|
|
|
|
|
|
// Some kind of MIDI?
|
|
|
|
EAS_DATA_HANDLE easdata;
|
|
|
|
if (EAS_Init(&easdata) == EAS_SUCCESS) {
|
|
|
|
EAS_FILE locator;
|
|
|
|
locator.path = NULL;
|
|
|
|
locator.fd = fd;
|
|
|
|
locator.offset = offset;
|
|
|
|
locator.length = length;
|
|
|
|
EAS_HANDLE eashandle;
|
|
|
|
if (EAS_OpenFile(easdata, &locator, &eashandle) == EAS_SUCCESS) {
|
|
|
|
EAS_CloseFile(easdata, eashandle);
|
|
|
|
EAS_Shutdown(easdata);
|
|
|
|
return SONIVOX_PLAYER;
|
|
|
|
}
|
|
|
|
EAS_Shutdown(easdata);
|
|
|
|
}
|
|
|
|
|
2009-08-07 09:30:32 -07:00
|
|
|
return getDefaultPlayerType();
|
2009-03-03 19:31:44 -08:00
|
|
|
}
|
|
|
|
|
2009-09-06 14:29:45 -07:00
|
|
|
player_type getPlayerType(const char* url)
|
2009-03-03 19:31:44 -08:00
|
|
|
{
|
2009-07-13 14:37:49 -07:00
|
|
|
if (TestPlayerStub::canBeUsed(url)) {
|
|
|
|
return TEST_PLAYER;
|
|
|
|
}
|
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
// use MidiFile for MIDI extensions
|
|
|
|
int lenURL = strlen(url);
|
|
|
|
for (int i = 0; i < NELEM(FILE_EXTS); ++i) {
|
|
|
|
int len = strlen(FILE_EXTS[i].extension);
|
|
|
|
int start = lenURL - len;
|
|
|
|
if (start > 0) {
|
|
|
|
if (!strncmp(url + start, FILE_EXTS[i].extension, len)) {
|
|
|
|
return FILE_EXTS[i].playertype;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2009-08-07 09:30:32 -07:00
|
|
|
return getDefaultPlayerType();
|
2009-03-03 19:31:44 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static sp<MediaPlayerBase> createPlayer(player_type playerType, void* cookie,
|
|
|
|
notify_callback_f notifyFunc)
|
|
|
|
{
|
|
|
|
sp<MediaPlayerBase> p;
|
|
|
|
switch (playerType) {
|
2009-03-21 11:40:18 -07:00
|
|
|
#ifndef NO_OPENCORE
|
2009-03-03 19:31:44 -08:00
|
|
|
case PV_PLAYER:
|
|
|
|
LOGV(" create PVPlayer");
|
|
|
|
p = new PVPlayer();
|
|
|
|
break;
|
2009-03-21 11:40:18 -07:00
|
|
|
#endif
|
2009-03-03 19:31:44 -08:00
|
|
|
case SONIVOX_PLAYER:
|
|
|
|
LOGV(" create MidiFile");
|
|
|
|
p = new MidiFile();
|
|
|
|
break;
|
|
|
|
case VORBIS_PLAYER:
|
|
|
|
LOGV(" create VorbisPlayer");
|
|
|
|
p = new VorbisPlayer();
|
|
|
|
break;
|
2009-09-11 09:54:52 -07:00
|
|
|
#if BUILD_WITH_FULL_STAGEFRIGHT
|
Squashed commit of the following:
commit 8d179995654c19d9094e51989dc84ed0deba6e04
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 16:30:40 2009 -0700
Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.
commit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 14:06:00 2009 -0700
OMX::list_nodes API, stagefright --list now lists all available OMX components.
commit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 16:04:29 2009 -0700
Reenabled "record" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.
commit d363dd74f611577567c66d25900d6264c306468c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:59:58 2009 -0700
Make non-socket communication in IOMX the default.
commit e89fc82c4fd138c88339887baf72f1d0e67f8660
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:32:33 2009 -0700
The OMX interface now optionally supports communication through the binder only (no sockets involved)
commit 28611de11223fba65299787cdd33f7fdbd6a60a3
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 15:09:13 2009 -0700
Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}
commit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 12:21:46 2009 -0700
Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...
commit ae209a2b5d09caed5dd383c910f238926aaa8fc6
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 09:33:29 2009 -0700
Simple video decoder performance test in "stagefright" commandline tool.
commit 59fe7840111d6f46dd3c48f4950146aed962dbd2
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 16:05:12 2009 -0700
StagefrightPlayer: Properly publish video dimensions by notifying the listener.
commit 51b6598f0e47be5e12d77f1d14e111e71c593638
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 11:38:15 2009 -0700
MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.
commit 31ce53375d748da3e7d30e993ce89dae97fd65ea
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 17:23:37 2009 -0700
Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.
commit a23e312b10631a5d47f5c9831205beac6b84ab36
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 15:10:13 2009 -0700
IGenesisPlayer and friends are no more, java interface now uses local playback instead
of playing inside the media server process.
commit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 13:17:03 2009 -0700
MP3 extractor now supports seeking (only fixed bitrate files currently supported)
commit 96a790405763bfa738d1c6845c99a9fdf579b66f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 7 10:53:54 2009 -0700
Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.
commit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 16:40:02 2009 -0700
Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.
commit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 12:18:29 2009 -0700
Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.
commit 88bffc5ed4033a607080f8777a1c0ec9e3e079de
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 2 12:25:03 2009 -0700
MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.
commit 732aa0a87c7e8d8a10776b275712649954962414
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:58:56 2009 -0700
Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.
commit 669e5944b2fe0542a3b8dba0c441a94503e99fb0
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:43:02 2009 -0700
Proper support for end-of-stream signalling of MediaSources.
commit afb038f2dc594c742e554b2d42b86ffc7434e3fc
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 30 16:48:03 2009 -0700
Support for the "sniffing" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.
commit ed3644b8bd56807e1db4b32433a93a2467f1f3c5
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 13:27:52 2009 -0700
I don't think prepare should automatically start the player.
commit 11eb9b49dc4a0819d366682817cba68613f4fe12
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 11:09:22 2009 -0700
Somewhat better timing information implemented in the MP3Extractor.
commit cab023a1751735c0ed26c8493498a91d8644c6c9
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 25 15:41:56 2009 -0700
Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.
commit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:41:12 2009 -0700
Make sure we only allocate surface buffers if there is video to be played.
commit 7f85e7d92fe81740e102e09905b19354f4ac178e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:19:32 2009 -0700
Clean up a failed merge and implement stub for new API in MediaPlayerBase.
commit f0e9d494a4c03402ea7b54891848ca5a50c421b2
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 15:38:03 2009 -0700
Support yuv420->rgb565 conversion if hardware color conversion is unavailable.
commit 87223248b3099cd5261b94169f84cfd1eba56a8f
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 09:35:56 2009 -0700
Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.
commit e07e651f0325892b797f3eb64dbeca0f317afdfd
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 16:26:42 2009 -0700
Enable assertions in HTTPDataSource.
commit 0dc97adebea1721156880f4b3d5c70f8d50c53b2
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:39 2009 -0700
delete foo.
commit 7f05845dda496e7defee284d32509d127e785784
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:08 2009 -0700
added foo.
commit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 11:44:31 2009 -0700
Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.
commit d6286a6bbca639952491448fa3e609b775a8a814
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 17:11:49 2009 -0700
send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now "works" on the emulator, too.
commit 8d657e004677a7c5dae4479e8519bcaa94c18aad
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 11:58:55 2009 -0700
Instead of erasing codec specific data once it's been output to the omx node, retain the data and just rewind after a stop.
commit 279fede6ba35cbc37c35616c53406bf2c9720202
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 10:58:11 2009 -0700
Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.
commit 0f717f15a6328efd3f34082929cd8ad2351095a9
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 08:44:12 2009 -0700
Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer's notion of time mapping.
commit 0cfb63e33270daf9b215214608ab383f93a31823
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 14:25:48 2009 -0700
Massive rename.
commit 30ed8f476c4431a5275538958b3e281bd17d5eab
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 13:52:41 2009 -0700
send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.
commit b832d04011b2dd8a9632eb7e575bfe1addd1270d
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:21:17 2009 -0700
MediaBuffers can now be "clone()", they sit on top of the same data but have their own range and metadata. Once a clone's refcount drops to 0 it decrements the refcount on the original buffer.
commit 4e944672808bdf1ed40a69f3f602f93ebf7b4049
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:01:01 2009 -0700
Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.
commit ddb7529b4de4828db51432bd405fddd76cfa3b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 16:30:25 2009 -0700
More fudging with A/V sync...
commit 1e5a4d8df08237b58c06c6527a33152ae931addf
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 11:54:20 2009 -0700
API cleanup of MediaSource. Got rid of MediaRing as it really doesn't serve a purpose if OMX decoders are used.
commit 0953c65232aa9753d17d2e25c5f5526eb810cf13
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 16:59:19 2009 -0700
Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.
commit 2085b8ea9484a21fa11f94194a27405d413aeecc
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 10:17:01 2009 -0700
Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.
commit 471f143458a8a0d93cb1bf9568c63c3967279dc6
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 17:32:27 2009 -0700
Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.
commit 4010d371dbe62ce4971e13437776cba32cb0bb3d
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 16:01:07 2009 -0700
Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.
commit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 15:33:58 2009 -0700
Change the TimeSource interface's APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.
commit 08bb46fa61d12e852a424698ddb0c90700328f6e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 11:57:24 2009 -0700
Using framework's Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.
commit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 17:12:03 2009 -0700
MediaSources now publish their format.
commit 7e429a26c57bf936e1a08035d2d11839f9f00310
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 16:38:29 2009 -0700
MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.
commit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 14:39:55 2009 -0700
Sync sample seek support.
commit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 13:51:11 2009 -0700
Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn't. Fixes a problem with seek.
commit e57781d3b2c985a74cd8b60e7c8f2d576459d038
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 10:52:20 2009 -0700
First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.
commit 0551cd78fda78bf66877fb26c5a55e5ae23d8367
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 16:23:38 2009 -0700
Preliminary support for camera input.
commit f8ebafa65d10d5a06944de6b2e2992a33121b857
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 12:13:47 2009 -0700
Allow NativeMediaPlayer access to Surface's getISurface() method.
commit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:38:25 2009 -0700
Header files are now in their own genesis2 hierarchy below frameworks/base/include.
commit f49b8b234b8f6ce83148787eef540dd920f04aa6
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:22:03 2009 -0700
moved MPEG4Writer into libgenesis2.
commit 5224254919dac4728677335ea60429fa16f518b4
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:13:38 2009 -0700
Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.
commit f9a9d84f7e0465ef5d1938a068655ba39527cf99
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 16:43:11 2009 -0700
Support for getPosition() and getDuration().
commit 3206cc5140bcbc88be039f8d94b954af63e69752
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 15:37:45 2009 -0700
Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()
commit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 13:49:50 2009 -0700
Proper disconnection from the OMX service.
commit cdcf47a2c31599109ee42277c7fa14af3c600091
Author: Andreas Huber <andih@google.com>
Date: Tue May 26 17:27:06 2009 -0700
New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.
commit 0586af20ac9ae0403dd190bafd290b0f90549723
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 15:53:19 2009 -0700
Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.
commit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 13:35:30 2009 -0700
Support for http URIs in MediaPlayer, compensate for AudioTrack latency.
commit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 11:33:25 2009 -0700
Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don't shutdown cleanly within a second.
commit 1f0268f4f14ad5215668f34e06a420850174d665
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:33:16 2009 -0700
and foo.txt is gone again.
commit 0feca4e0919f345704d78ec78894bac5027bd5ed
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:28:49 2009 -0700
added foo.txt
commit 9c7d04b35cdc895a2de3602dc46522f608bd205f
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:28:04 2009 -0700
delete foo again
commit fec3ca1720992cce51b9a92b86b945da88a6b16c
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:27:45 2009 -0700
weird
commit 30a6571302333146e537e537a3a8986245cca87c
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:18:55 2009 -0700
reverse test
commit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:18:22 2009 -0700
test
commit a9eeafec6e46072cac41e54ebdbd153cb7ae7518
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 16:37:50 2009 -0700
Use the video ring again for now.
commit e05ff3d3c1c4f89ef499a2b172138a775fd694e3
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 15:42:19 2009 -0700
Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.
commit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 09:56:11 2009 -0700
Fix the build, all binder-related headers have moved and there's a new library libbinde
r to link against now.
commit 23e0a24404d16c898c2c6b3c7495ad303844bc71
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 08:42:04 2009 -0700
Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss & friends) not currently working.
commit 9cd77adb1ac194197364ffad00a0d7215f458e1a
Author: Andreas Huber <andih@google.com>
Date: Wed May 20 12:31:45 2009 -0700
New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.
commit 5c510fb55ffed7ec25305999ed9b6c1eec48d503
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 15:40:06 2009 -0700
Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.
commit f6c7a2040b8eb43326621f12c3a936e09b3a70e3
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 11:03:04 2009 -0700
The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.
commit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac
Author: Andreas Huber <andih@google.com>
Date: Thu May 14 12:39:34 2009 -0700
dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.
commit 380369f54a8027cbc9349305184d6bf527a24efe
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 17:32:00 2009 -0700
Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.
commit b5cada56b9089a23e0c461352a97dc71e08b424d
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 12:11:06 2009 -0700
Introduction of TimeSource class, clean shutdown of OMX Nodes.
commit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 17:11:56 2009 -0700
Helper classes MediaRing and MediaPlayer.
commit 9aaed8739b4bb941473da367fb88f63224d2f1b7
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 14:19:18 2009 -0700
Using mmap to map a file instead of going through FILE* improves performance, who knew?
commit ad097a78bbd002c59193ffdc39b64935928426c7
Author: Andreas Huber <andih@google.com>
Date: Mon May 11 16:42:42 2009 -0700
Added a performance test, refactored AudioDecoder a little.
commit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 16:19:29 2009 -0700
No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.
commit 858955b42c29b8033841a8caaa56c2a449810ef3
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 14:02:38 2009 -0700
Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.
commit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 13:21:45 2009 -0700
Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes
commit 3941fcf87a48dda81683df727dfb1381f62d9184
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 16:37:45 2009 -0700
some refactoring. Most streams play now.
commit d3152862840d4dd39068e5197bec8674f3d55dd5
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 15:37:32 2009 -0700
Misc. changes to support H264 decoding using the qcom hardware decoder
commit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 09:28:18 2009 -0700
Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.
commit fe6a50943f885e065d4061aa727a54417e9f36db
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 14:18:27 2009 -0700
Refactored commandline app instantiation of the decoder.
commit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 10:41:14 2009 -0700
Proper audio/video synchronization.
commit 569ee3a23f600f4b6b87c6178c0223b06e97f201
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 09:17:20 2009 -0700
Preliminary support for timestamps.
commit e4e302a89207550d8a7170d8c0afbd9c15047c84
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:13:12 2009 -0700
Another quick hack job to make CachingDataSource thread-safe as well.
commit dfb376a58bd7c09aa04e89558186fcfe13fe696c
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:08:14 2009 -0700
Quick rushjob to make FileSource and SampleTable thread safe.
commit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 17:22:04 2009 -0700
Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.
commit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 09:26:42 2009 -0700
Getting rid of old sample code to drive the OMXNode binder interface.
commit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 16:21:11 2009 -0700
Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder
commit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 15:56:19 2009 -0700
Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)
commit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 11:52:48 2009 -0700
Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.
commit 1470427866b0d3e0ce6848b4edc01c13a09be289
Author: Andreas Huber <andih@google.com>
Date: Thu Apr 30 15:19:31 2009 -0700
Another checkpoint, amr decoding now functional.
commit e612d044439f56331b6a2bc4a88622e04d4d42e7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 12:11:29 2009 -0700
string wrapper around String8, various fixes, shoutcast now works again.
commit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 11:08:18 2009 -0700
Initial check-in of OMXNode binder interface.
commit 7880d2957f74c0d7fba7679431ff5adb3780543b
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 10:05:01 2009 -0700
Initial check-in of both libgenesis2 and the genesis2 commandline tool.
2009-07-14 16:56:47 -07:00
|
|
|
case STAGEFRIGHT_PLAYER:
|
|
|
|
LOGV(" create StagefrightPlayer");
|
|
|
|
p = new StagefrightPlayer;
|
|
|
|
break;
|
2009-09-11 09:54:52 -07:00
|
|
|
#endif
|
2009-07-13 14:37:49 -07:00
|
|
|
case TEST_PLAYER:
|
|
|
|
LOGV("Create Test Player stub");
|
|
|
|
p = new TestPlayerStub();
|
|
|
|
break;
|
2009-03-03 19:31:44 -08:00
|
|
|
}
|
|
|
|
if (p != NULL) {
|
|
|
|
if (p->initCheck() == NO_ERROR) {
|
|
|
|
p->setNotifyCallback(cookie, notifyFunc);
|
|
|
|
} else {
|
|
|
|
p.clear();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (p == NULL) {
|
|
|
|
LOGE("Failed to create player object");
|
|
|
|
}
|
|
|
|
return p;
|
|
|
|
}
|
|
|
|
|
|
|
|
sp<MediaPlayerBase> MediaPlayerService::Client::createPlayer(player_type playerType)
|
|
|
|
{
|
|
|
|
// determine if we have the right player type
|
|
|
|
sp<MediaPlayerBase> p = mPlayer;
|
|
|
|
if ((p != NULL) && (p->playerType() != playerType)) {
|
|
|
|
LOGV("delete player");
|
|
|
|
p.clear();
|
|
|
|
}
|
|
|
|
if (p == NULL) {
|
|
|
|
p = android::createPlayer(playerType, this, notify);
|
|
|
|
}
|
|
|
|
return p;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t MediaPlayerService::Client::setDataSource(const char *url)
|
|
|
|
{
|
|
|
|
LOGV("setDataSource(%s)", url);
|
|
|
|
if (url == NULL)
|
|
|
|
return UNKNOWN_ERROR;
|
|
|
|
|
|
|
|
if (strncmp(url, "content://", 10) == 0) {
|
|
|
|
// get a filedescriptor for the content Uri and
|
|
|
|
// pass it to the setDataSource(fd) method
|
|
|
|
|
|
|
|
String16 url16(url);
|
|
|
|
int fd = android::openContentProviderFile(url16);
|
|
|
|
if (fd < 0)
|
|
|
|
{
|
|
|
|
LOGE("Couldn't open fd for %s", url);
|
|
|
|
return UNKNOWN_ERROR;
|
|
|
|
}
|
|
|
|
setDataSource(fd, 0, 0x7fffffffffLL); // this sets mStatus
|
|
|
|
close(fd);
|
|
|
|
return mStatus;
|
|
|
|
} else {
|
|
|
|
player_type playerType = getPlayerType(url);
|
|
|
|
LOGV("player type = %d", playerType);
|
|
|
|
|
|
|
|
// create the right type of player
|
|
|
|
sp<MediaPlayerBase> p = createPlayer(playerType);
|
|
|
|
if (p == NULL) return NO_INIT;
|
|
|
|
|
|
|
|
if (!p->hardwareOutput()) {
|
|
|
|
mAudioOutput = new AudioOutput();
|
|
|
|
static_cast<MediaPlayerInterface*>(p.get())->setAudioSink(mAudioOutput);
|
|
|
|
}
|
|
|
|
|
|
|
|
// now set data source
|
|
|
|
LOGV(" setDataSource");
|
|
|
|
mStatus = p->setDataSource(url);
|
2009-07-13 14:37:49 -07:00
|
|
|
if (mStatus == NO_ERROR) {
|
|
|
|
mPlayer = p;
|
|
|
|
} else {
|
|
|
|
LOGE(" error: %d", mStatus);
|
|
|
|
}
|
2009-03-03 19:31:44 -08:00
|
|
|
return mStatus;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t MediaPlayerService::Client::setDataSource(int fd, int64_t offset, int64_t length)
|
|
|
|
{
|
|
|
|
LOGV("setDataSource fd=%d, offset=%lld, length=%lld", fd, offset, length);
|
|
|
|
struct stat sb;
|
|
|
|
int ret = fstat(fd, &sb);
|
|
|
|
if (ret != 0) {
|
|
|
|
LOGE("fstat(%d) failed: %d, %s", fd, ret, strerror(errno));
|
|
|
|
return UNKNOWN_ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
LOGV("st_dev = %llu", sb.st_dev);
|
|
|
|
LOGV("st_mode = %u", sb.st_mode);
|
|
|
|
LOGV("st_uid = %lu", sb.st_uid);
|
|
|
|
LOGV("st_gid = %lu", sb.st_gid);
|
|
|
|
LOGV("st_size = %llu", sb.st_size);
|
|
|
|
|
|
|
|
if (offset >= sb.st_size) {
|
|
|
|
LOGE("offset error");
|
|
|
|
::close(fd);
|
|
|
|
return UNKNOWN_ERROR;
|
|
|
|
}
|
|
|
|
if (offset + length > sb.st_size) {
|
|
|
|
length = sb.st_size - offset;
|
|
|
|
LOGV("calculated length = %lld", length);
|
|
|
|
}
|
|
|
|
|
|
|
|
player_type playerType = getPlayerType(fd, offset, length);
|
|
|
|
LOGV("player type = %d", playerType);
|
|
|
|
|
|
|
|
// create the right type of player
|
|
|
|
sp<MediaPlayerBase> p = createPlayer(playerType);
|
|
|
|
if (p == NULL) return NO_INIT;
|
|
|
|
|
|
|
|
if (!p->hardwareOutput()) {
|
|
|
|
mAudioOutput = new AudioOutput();
|
|
|
|
static_cast<MediaPlayerInterface*>(p.get())->setAudioSink(mAudioOutput);
|
|
|
|
}
|
|
|
|
|
|
|
|
// now set data source
|
|
|
|
mStatus = p->setDataSource(fd, offset, length);
|
|
|
|
if (mStatus == NO_ERROR) mPlayer = p;
|
|
|
|
return mStatus;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t MediaPlayerService::Client::setVideoSurface(const sp<ISurface>& surface)
|
|
|
|
{
|
|
|
|
LOGV("[%d] setVideoSurface(%p)", mConnId, surface.get());
|
|
|
|
sp<MediaPlayerBase> p = getPlayer();
|
|
|
|
if (p == 0) return UNKNOWN_ERROR;
|
|
|
|
return p->setVideoSurface(surface);
|
|
|
|
}
|
|
|
|
|
2009-05-12 23:25:55 -07:00
|
|
|
status_t MediaPlayerService::Client::invoke(const Parcel& request,
|
|
|
|
Parcel *reply)
|
|
|
|
{
|
|
|
|
sp<MediaPlayerBase> p = getPlayer();
|
|
|
|
if (p == NULL) return UNKNOWN_ERROR;
|
|
|
|
return p->invoke(request, reply);
|
|
|
|
}
|
|
|
|
|
2009-07-08 08:57:42 -07:00
|
|
|
// This call doesn't need to access the native player.
|
|
|
|
status_t MediaPlayerService::Client::setMetadataFilter(const Parcel& filter)
|
|
|
|
{
|
|
|
|
status_t status;
|
2009-07-20 15:07:26 -07:00
|
|
|
media::Metadata::Filter allow, drop;
|
2009-07-08 08:57:42 -07:00
|
|
|
|
2009-07-10 13:53:06 -07:00
|
|
|
if (unmarshallFilter(filter, &allow, &status) &&
|
|
|
|
unmarshallFilter(filter, &drop, &status)) {
|
|
|
|
Mutex::Autolock lock(mLock);
|
2009-07-08 08:57:42 -07:00
|
|
|
|
|
|
|
mMetadataAllow = allow;
|
|
|
|
mMetadataDrop = drop;
|
|
|
|
}
|
|
|
|
return status;
|
|
|
|
}
|
|
|
|
|
2009-07-10 13:53:06 -07:00
|
|
|
status_t MediaPlayerService::Client::getMetadata(
|
|
|
|
bool update_only, bool apply_filter, Parcel *reply)
|
2009-07-09 09:21:33 -07:00
|
|
|
{
|
2009-07-20 15:07:26 -07:00
|
|
|
sp<MediaPlayerBase> player = getPlayer();
|
|
|
|
if (player == 0) return UNKNOWN_ERROR;
|
2009-07-16 16:39:53 -07:00
|
|
|
|
2009-07-09 09:21:33 -07:00
|
|
|
status_t status;
|
2009-07-16 16:39:53 -07:00
|
|
|
// Placeholder for the return code, updated by the caller.
|
|
|
|
reply->writeInt32(-1);
|
2009-07-10 13:53:06 -07:00
|
|
|
|
2009-07-20 15:07:26 -07:00
|
|
|
media::Metadata::Filter ids;
|
2009-07-10 13:53:06 -07:00
|
|
|
|
|
|
|
// We don't block notifications while we fetch the data. We clear
|
|
|
|
// mMetadataUpdated first so we don't lose notifications happening
|
|
|
|
// during the rest of this call.
|
|
|
|
{
|
|
|
|
Mutex::Autolock lock(mLock);
|
|
|
|
if (update_only) {
|
2009-07-16 16:39:53 -07:00
|
|
|
ids = mMetadataUpdated;
|
2009-07-10 13:53:06 -07:00
|
|
|
}
|
|
|
|
mMetadataUpdated.clear();
|
|
|
|
}
|
2009-07-09 09:21:33 -07:00
|
|
|
|
2009-07-20 15:07:26 -07:00
|
|
|
media::Metadata metadata(reply);
|
2009-07-10 13:53:06 -07:00
|
|
|
|
2009-07-20 15:07:26 -07:00
|
|
|
metadata.appendHeader();
|
|
|
|
status = player->getMetadata(ids, reply);
|
2009-07-16 16:39:53 -07:00
|
|
|
|
|
|
|
if (status != OK) {
|
2009-07-20 15:07:26 -07:00
|
|
|
metadata.resetParcel();
|
2009-07-16 16:39:53 -07:00
|
|
|
LOGE("getMetadata failed %d", status);
|
|
|
|
return status;
|
|
|
|
}
|
|
|
|
|
|
|
|
// FIXME: Implement filtering on the result. Not critical since
|
|
|
|
// filtering takes place on the update notifications already. This
|
|
|
|
// would be when all the metadata are fetch and a filter is set.
|
|
|
|
|
|
|
|
// Everything is fine, update the metadata length.
|
2009-07-20 15:07:26 -07:00
|
|
|
metadata.updateLength();
|
2009-07-16 16:39:53 -07:00
|
|
|
return OK;
|
2009-07-09 09:21:33 -07:00
|
|
|
}
|
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
status_t MediaPlayerService::Client::prepareAsync()
|
|
|
|
{
|
|
|
|
LOGV("[%d] prepareAsync", mConnId);
|
|
|
|
sp<MediaPlayerBase> p = getPlayer();
|
|
|
|
if (p == 0) return UNKNOWN_ERROR;
|
|
|
|
status_t ret = p->prepareAsync();
|
|
|
|
#if CALLBACK_ANTAGONIZER
|
|
|
|
LOGD("start Antagonizer");
|
|
|
|
if (ret == NO_ERROR) mAntagonizer->start();
|
|
|
|
#endif
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t MediaPlayerService::Client::start()
|
|
|
|
{
|
|
|
|
LOGV("[%d] start", mConnId);
|
|
|
|
sp<MediaPlayerBase> p = getPlayer();
|
|
|
|
if (p == 0) return UNKNOWN_ERROR;
|
|
|
|
p->setLooping(mLoop);
|
|
|
|
return p->start();
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t MediaPlayerService::Client::stop()
|
|
|
|
{
|
|
|
|
LOGV("[%d] stop", mConnId);
|
|
|
|
sp<MediaPlayerBase> p = getPlayer();
|
|
|
|
if (p == 0) return UNKNOWN_ERROR;
|
|
|
|
return p->stop();
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t MediaPlayerService::Client::pause()
|
|
|
|
{
|
|
|
|
LOGV("[%d] pause", mConnId);
|
|
|
|
sp<MediaPlayerBase> p = getPlayer();
|
|
|
|
if (p == 0) return UNKNOWN_ERROR;
|
|
|
|
return p->pause();
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t MediaPlayerService::Client::isPlaying(bool* state)
|
|
|
|
{
|
|
|
|
*state = false;
|
|
|
|
sp<MediaPlayerBase> p = getPlayer();
|
|
|
|
if (p == 0) return UNKNOWN_ERROR;
|
|
|
|
*state = p->isPlaying();
|
|
|
|
LOGV("[%d] isPlaying: %d", mConnId, *state);
|
|
|
|
return NO_ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t MediaPlayerService::Client::getCurrentPosition(int *msec)
|
|
|
|
{
|
|
|
|
LOGV("getCurrentPosition");
|
|
|
|
sp<MediaPlayerBase> p = getPlayer();
|
|
|
|
if (p == 0) return UNKNOWN_ERROR;
|
|
|
|
status_t ret = p->getCurrentPosition(msec);
|
|
|
|
if (ret == NO_ERROR) {
|
|
|
|
LOGV("[%d] getCurrentPosition = %d", mConnId, *msec);
|
|
|
|
} else {
|
|
|
|
LOGE("getCurrentPosition returned %d", ret);
|
|
|
|
}
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t MediaPlayerService::Client::getDuration(int *msec)
|
|
|
|
{
|
|
|
|
LOGV("getDuration");
|
|
|
|
sp<MediaPlayerBase> p = getPlayer();
|
|
|
|
if (p == 0) return UNKNOWN_ERROR;
|
|
|
|
status_t ret = p->getDuration(msec);
|
|
|
|
if (ret == NO_ERROR) {
|
|
|
|
LOGV("[%d] getDuration = %d", mConnId, *msec);
|
|
|
|
} else {
|
|
|
|
LOGE("getDuration returned %d", ret);
|
|
|
|
}
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t MediaPlayerService::Client::seekTo(int msec)
|
|
|
|
{
|
|
|
|
LOGV("[%d] seekTo(%d)", mConnId, msec);
|
|
|
|
sp<MediaPlayerBase> p = getPlayer();
|
|
|
|
if (p == 0) return UNKNOWN_ERROR;
|
|
|
|
return p->seekTo(msec);
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t MediaPlayerService::Client::reset()
|
|
|
|
{
|
|
|
|
LOGV("[%d] reset", mConnId);
|
|
|
|
sp<MediaPlayerBase> p = getPlayer();
|
|
|
|
if (p == 0) return UNKNOWN_ERROR;
|
|
|
|
return p->reset();
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t MediaPlayerService::Client::setAudioStreamType(int type)
|
|
|
|
{
|
|
|
|
LOGV("[%d] setAudioStreamType(%d)", mConnId, type);
|
|
|
|
// TODO: for hardware output, call player instead
|
|
|
|
Mutex::Autolock l(mLock);
|
|
|
|
if (mAudioOutput != 0) mAudioOutput->setAudioStreamType(type);
|
|
|
|
return NO_ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t MediaPlayerService::Client::setLooping(int loop)
|
|
|
|
{
|
|
|
|
LOGV("[%d] setLooping(%d)", mConnId, loop);
|
|
|
|
mLoop = loop;
|
|
|
|
sp<MediaPlayerBase> p = getPlayer();
|
|
|
|
if (p != 0) return p->setLooping(loop);
|
|
|
|
return NO_ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t MediaPlayerService::Client::setVolume(float leftVolume, float rightVolume)
|
|
|
|
{
|
|
|
|
LOGV("[%d] setVolume(%f, %f)", mConnId, leftVolume, rightVolume);
|
|
|
|
// TODO: for hardware output, call player instead
|
|
|
|
Mutex::Autolock l(mLock);
|
|
|
|
if (mAudioOutput != 0) mAudioOutput->setVolume(leftVolume, rightVolume);
|
|
|
|
return NO_ERROR;
|
|
|
|
}
|
|
|
|
|
2009-07-10 13:53:06 -07:00
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
void MediaPlayerService::Client::notify(void* cookie, int msg, int ext1, int ext2)
|
|
|
|
{
|
|
|
|
Client* client = static_cast<Client*>(cookie);
|
2009-07-08 08:57:42 -07:00
|
|
|
|
|
|
|
if (MEDIA_INFO == msg &&
|
2009-07-10 13:53:06 -07:00
|
|
|
MEDIA_INFO_METADATA_UPDATE == ext1) {
|
2009-07-20 15:07:26 -07:00
|
|
|
const media::Metadata::Type metadata_type = ext2;
|
2009-07-10 13:53:06 -07:00
|
|
|
|
|
|
|
if(client->shouldDropMetadata(metadata_type)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Update the list of metadata that have changed. getMetadata
|
|
|
|
// also access mMetadataUpdated and clears it.
|
|
|
|
client->addNewMetadataUpdate(metadata_type);
|
2009-07-08 08:57:42 -07:00
|
|
|
}
|
2009-03-03 19:31:44 -08:00
|
|
|
LOGV("[%d] notify (%p, %d, %d, %d)", client->mConnId, cookie, msg, ext1, ext2);
|
|
|
|
client->mClient->notify(msg, ext1, ext2);
|
|
|
|
}
|
|
|
|
|
2009-07-10 13:53:06 -07:00
|
|
|
|
2009-07-20 15:07:26 -07:00
|
|
|
bool MediaPlayerService::Client::shouldDropMetadata(media::Metadata::Type code) const
|
2009-07-08 08:57:42 -07:00
|
|
|
{
|
2009-07-10 13:53:06 -07:00
|
|
|
Mutex::Autolock lock(mLock);
|
2009-07-08 08:57:42 -07:00
|
|
|
|
2009-07-10 13:53:06 -07:00
|
|
|
if (findMetadata(mMetadataDrop, code)) {
|
2009-07-08 08:57:42 -07:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2009-07-10 13:53:06 -07:00
|
|
|
if (mMetadataAllow.isEmpty() || findMetadata(mMetadataAllow, code)) {
|
2009-07-08 08:57:42 -07:00
|
|
|
return false;
|
2009-07-10 13:53:06 -07:00
|
|
|
} else {
|
2009-07-08 08:57:42 -07:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2009-07-10 13:53:06 -07:00
|
|
|
|
2009-07-20 15:07:26 -07:00
|
|
|
void MediaPlayerService::Client::addNewMetadataUpdate(media::Metadata::Type metadata_type) {
|
2009-07-10 13:53:06 -07:00
|
|
|
Mutex::Autolock lock(mLock);
|
|
|
|
if (mMetadataUpdated.indexOf(metadata_type) < 0) {
|
|
|
|
mMetadataUpdated.add(metadata_type);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
#if CALLBACK_ANTAGONIZER
|
|
|
|
const int Antagonizer::interval = 10000; // 10 msecs
|
|
|
|
|
|
|
|
Antagonizer::Antagonizer(notify_callback_f cb, void* client) :
|
|
|
|
mExit(false), mActive(false), mClient(client), mCb(cb)
|
|
|
|
{
|
|
|
|
createThread(callbackThread, this);
|
|
|
|
}
|
|
|
|
|
|
|
|
void Antagonizer::kill()
|
|
|
|
{
|
|
|
|
Mutex::Autolock _l(mLock);
|
|
|
|
mActive = false;
|
|
|
|
mExit = true;
|
|
|
|
mCondition.wait(mLock);
|
|
|
|
}
|
|
|
|
|
|
|
|
int Antagonizer::callbackThread(void* user)
|
|
|
|
{
|
|
|
|
LOGD("Antagonizer started");
|
|
|
|
Antagonizer* p = reinterpret_cast<Antagonizer*>(user);
|
|
|
|
while (!p->mExit) {
|
|
|
|
if (p->mActive) {
|
|
|
|
LOGV("send event");
|
|
|
|
p->mCb(p->mClient, 0, 0, 0);
|
|
|
|
}
|
|
|
|
usleep(interval);
|
|
|
|
}
|
|
|
|
Mutex::Autolock _l(p->mLock);
|
|
|
|
p->mCondition.signal();
|
|
|
|
LOGD("Antagonizer stopped");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
static size_t kDefaultHeapSize = 1024 * 1024; // 1MB
|
|
|
|
|
|
|
|
sp<IMemory> MediaPlayerService::decode(const char* url, uint32_t *pSampleRate, int* pNumChannels, int* pFormat)
|
|
|
|
{
|
|
|
|
LOGV("decode(%s)", url);
|
|
|
|
sp<MemoryBase> mem;
|
|
|
|
sp<MediaPlayerBase> player;
|
|
|
|
|
|
|
|
// Protect our precious, precious DRMd ringtones by only allowing
|
|
|
|
// decoding of http, but not filesystem paths or content Uris.
|
|
|
|
// If the application wants to decode those, it should open a
|
|
|
|
// filedescriptor for them and use that.
|
|
|
|
if (url != NULL && strncmp(url, "http://", 7) != 0) {
|
|
|
|
LOGD("Can't decode %s by path, use filedescriptor instead", url);
|
|
|
|
return mem;
|
|
|
|
}
|
|
|
|
|
|
|
|
player_type playerType = getPlayerType(url);
|
|
|
|
LOGV("player type = %d", playerType);
|
|
|
|
|
|
|
|
// create the right type of player
|
|
|
|
sp<AudioCache> cache = new AudioCache(url);
|
|
|
|
player = android::createPlayer(playerType, cache.get(), cache->notify);
|
|
|
|
if (player == NULL) goto Exit;
|
|
|
|
if (player->hardwareOutput()) goto Exit;
|
|
|
|
|
|
|
|
static_cast<MediaPlayerInterface*>(player.get())->setAudioSink(cache);
|
|
|
|
|
|
|
|
// set data source
|
|
|
|
if (player->setDataSource(url) != NO_ERROR) goto Exit;
|
|
|
|
|
|
|
|
LOGV("prepare");
|
|
|
|
player->prepareAsync();
|
|
|
|
|
|
|
|
LOGV("wait for prepare");
|
|
|
|
if (cache->wait() != NO_ERROR) goto Exit;
|
|
|
|
|
|
|
|
LOGV("start");
|
|
|
|
player->start();
|
|
|
|
|
|
|
|
LOGV("wait for playback complete");
|
|
|
|
if (cache->wait() != NO_ERROR) goto Exit;
|
|
|
|
|
|
|
|
mem = new MemoryBase(cache->getHeap(), 0, cache->size());
|
|
|
|
*pSampleRate = cache->sampleRate();
|
|
|
|
*pNumChannels = cache->channelCount();
|
|
|
|
*pFormat = cache->format();
|
|
|
|
LOGV("return memory @ %p, sampleRate=%u, channelCount = %d, format = %d", mem->pointer(), *pSampleRate, *pNumChannels, *pFormat);
|
|
|
|
|
|
|
|
Exit:
|
|
|
|
if (player != 0) player->reset();
|
|
|
|
return mem;
|
|
|
|
}
|
|
|
|
|
|
|
|
sp<IMemory> MediaPlayerService::decode(int fd, int64_t offset, int64_t length, uint32_t *pSampleRate, int* pNumChannels, int* pFormat)
|
|
|
|
{
|
|
|
|
LOGV("decode(%d, %lld, %lld)", fd, offset, length);
|
|
|
|
sp<MemoryBase> mem;
|
|
|
|
sp<MediaPlayerBase> player;
|
|
|
|
|
|
|
|
player_type playerType = getPlayerType(fd, offset, length);
|
|
|
|
LOGV("player type = %d", playerType);
|
|
|
|
|
|
|
|
// create the right type of player
|
|
|
|
sp<AudioCache> cache = new AudioCache("decode_fd");
|
|
|
|
player = android::createPlayer(playerType, cache.get(), cache->notify);
|
|
|
|
if (player == NULL) goto Exit;
|
|
|
|
if (player->hardwareOutput()) goto Exit;
|
|
|
|
|
|
|
|
static_cast<MediaPlayerInterface*>(player.get())->setAudioSink(cache);
|
|
|
|
|
|
|
|
// set data source
|
|
|
|
if (player->setDataSource(fd, offset, length) != NO_ERROR) goto Exit;
|
|
|
|
|
|
|
|
LOGV("prepare");
|
|
|
|
player->prepareAsync();
|
|
|
|
|
|
|
|
LOGV("wait for prepare");
|
|
|
|
if (cache->wait() != NO_ERROR) goto Exit;
|
|
|
|
|
|
|
|
LOGV("start");
|
|
|
|
player->start();
|
|
|
|
|
|
|
|
LOGV("wait for playback complete");
|
|
|
|
if (cache->wait() != NO_ERROR) goto Exit;
|
|
|
|
|
|
|
|
mem = new MemoryBase(cache->getHeap(), 0, cache->size());
|
|
|
|
*pSampleRate = cache->sampleRate();
|
|
|
|
*pNumChannels = cache->channelCount();
|
|
|
|
*pFormat = cache->format();
|
|
|
|
LOGV("return memory @ %p, sampleRate=%u, channelCount = %d, format = %d", mem->pointer(), *pSampleRate, *pNumChannels, *pFormat);
|
|
|
|
|
|
|
|
Exit:
|
|
|
|
if (player != 0) player->reset();
|
|
|
|
::close(fd);
|
|
|
|
return mem;
|
|
|
|
}
|
|
|
|
|
2009-09-20 10:42:13 -07:00
|
|
|
/*
|
|
|
|
* Avert your eyes, ugly hack ahead.
|
|
|
|
* The following is to support music visualizations.
|
|
|
|
*/
|
|
|
|
|
|
|
|
static const int NUMVIZBUF = 32;
|
|
|
|
static const int VIZBUFFRAMES = 1024;
|
|
|
|
static const int TOTALBUFTIMEMSEC = NUMVIZBUF * VIZBUFFRAMES * 1000 / 44100;
|
|
|
|
|
|
|
|
static bool gotMem = false;
|
|
|
|
static sp<MemoryBase> mem[NUMVIZBUF];
|
|
|
|
static uint64_t timeStamp[NUMVIZBUF];
|
|
|
|
static uint64_t lastReadTime;
|
|
|
|
static uint64_t lastWriteTime;
|
|
|
|
static int writeIdx = 0;
|
|
|
|
|
|
|
|
static void allocVizBufs() {
|
|
|
|
if (!gotMem) {
|
|
|
|
for (int i=0;i<NUMVIZBUF;i++) {
|
|
|
|
sp<MemoryHeapBase> heap = new MemoryHeapBase(VIZBUFFRAMES*2, 0, "snooper");
|
|
|
|
mem[i] = new MemoryBase(heap, 0, heap->getSize());
|
|
|
|
timeStamp[i] = 0;
|
|
|
|
}
|
|
|
|
gotMem = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Get a buffer of audio data that is about to be played.
|
|
|
|
* We don't synchronize this because in practice the writer
|
|
|
|
* is ahead of the reader, and even if we did happen to catch
|
|
|
|
* a buffer while it's being written, it's just a visualization,
|
|
|
|
* so no harm done.
|
|
|
|
*/
|
|
|
|
static sp<MemoryBase> getVizBuffer() {
|
|
|
|
|
|
|
|
allocVizBufs();
|
|
|
|
|
|
|
|
lastReadTime = uptimeMillis() + 100; // account for renderer delay (we shouldn't be doing this here)
|
|
|
|
|
|
|
|
// if there is no recent buffer (yet), just return empty handed
|
|
|
|
if (lastWriteTime + TOTALBUFTIMEMSEC < lastReadTime) {
|
|
|
|
//LOGI("@@@@ no audio data to look at yet");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
char buf[200];
|
|
|
|
|
|
|
|
int closestIdx = -1;
|
|
|
|
uint32_t closestTime = 0x7ffffff;
|
|
|
|
|
|
|
|
for (int i = 0; i < NUMVIZBUF; i++) {
|
|
|
|
uint64_t tsi = timeStamp[i];
|
|
|
|
uint64_t diff = tsi > lastReadTime ? tsi - lastReadTime : lastReadTime - tsi;
|
|
|
|
if (diff < closestTime) {
|
|
|
|
closestIdx = i;
|
|
|
|
closestTime = diff;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (closestIdx >= 0) {
|
|
|
|
//LOGI("@@@ return buffer %d, %d/%d", closestIdx, uint32_t(lastReadTime), uint32_t(timeStamp[closestIdx]));
|
|
|
|
return mem[closestIdx];
|
|
|
|
}
|
|
|
|
|
|
|
|
// we won't get here, since we either bailed out early, or got a buffer
|
|
|
|
LOGD("Didn't expect to be here");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void storeVizBuf(const void *data, int len, uint64_t time) {
|
|
|
|
// Copy the data in to the visualizer buffer
|
|
|
|
// Assume a 16 bit stereo source for now.
|
|
|
|
short *viz = (short*)mem[writeIdx]->pointer();
|
|
|
|
short *src = (short*)data;
|
|
|
|
for (int i = 0; i < VIZBUFFRAMES; i++) {
|
|
|
|
// Degrade quality by mixing to mono and clearing the lowest 3 bits.
|
|
|
|
// This should still be good enough for a visualization
|
|
|
|
*viz++ = ((int(src[0]) + int(src[1])) >> 1) & ~0x7;
|
|
|
|
src += 2;
|
|
|
|
}
|
|
|
|
timeStamp[writeIdx++] = time;
|
|
|
|
if (writeIdx >= NUMVIZBUF) {
|
|
|
|
writeIdx = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void makeVizBuffers(const char *data, int len, uint64_t time) {
|
|
|
|
|
|
|
|
allocVizBufs();
|
|
|
|
|
|
|
|
uint64_t startTime = time;
|
|
|
|
const int frameSize = 4; // 16 bit stereo sample is 4 bytes
|
|
|
|
while (len >= VIZBUFFRAMES * frameSize) {
|
|
|
|
storeVizBuf(data, len, time);
|
|
|
|
data += VIZBUFFRAMES * frameSize;
|
|
|
|
len -= VIZBUFFRAMES * frameSize;
|
|
|
|
time += 1000 * VIZBUFFRAMES / 44100;
|
|
|
|
}
|
|
|
|
//LOGI("@@@ stored buffers from %d to %d", uint32_t(startTime), uint32_t(time));
|
|
|
|
}
|
|
|
|
|
|
|
|
sp<IMemory> MediaPlayerService::snoop()
|
|
|
|
{
|
|
|
|
sp<MemoryBase> mem = getVizBuffer();
|
|
|
|
return mem;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
#undef LOG_TAG
|
|
|
|
#define LOG_TAG "AudioSink"
|
|
|
|
MediaPlayerService::AudioOutput::AudioOutput()
|
Squashed commit of the following:
commit 8d179995654c19d9094e51989dc84ed0deba6e04
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 16:30:40 2009 -0700
Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.
commit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 14:06:00 2009 -0700
OMX::list_nodes API, stagefright --list now lists all available OMX components.
commit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 16:04:29 2009 -0700
Reenabled "record" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.
commit d363dd74f611577567c66d25900d6264c306468c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:59:58 2009 -0700
Make non-socket communication in IOMX the default.
commit e89fc82c4fd138c88339887baf72f1d0e67f8660
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:32:33 2009 -0700
The OMX interface now optionally supports communication through the binder only (no sockets involved)
commit 28611de11223fba65299787cdd33f7fdbd6a60a3
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 15:09:13 2009 -0700
Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}
commit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 12:21:46 2009 -0700
Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...
commit ae209a2b5d09caed5dd383c910f238926aaa8fc6
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 09:33:29 2009 -0700
Simple video decoder performance test in "stagefright" commandline tool.
commit 59fe7840111d6f46dd3c48f4950146aed962dbd2
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 16:05:12 2009 -0700
StagefrightPlayer: Properly publish video dimensions by notifying the listener.
commit 51b6598f0e47be5e12d77f1d14e111e71c593638
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 11:38:15 2009 -0700
MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.
commit 31ce53375d748da3e7d30e993ce89dae97fd65ea
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 17:23:37 2009 -0700
Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.
commit a23e312b10631a5d47f5c9831205beac6b84ab36
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 15:10:13 2009 -0700
IGenesisPlayer and friends are no more, java interface now uses local playback instead
of playing inside the media server process.
commit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 13:17:03 2009 -0700
MP3 extractor now supports seeking (only fixed bitrate files currently supported)
commit 96a790405763bfa738d1c6845c99a9fdf579b66f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 7 10:53:54 2009 -0700
Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.
commit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 16:40:02 2009 -0700
Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.
commit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 12:18:29 2009 -0700
Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.
commit 88bffc5ed4033a607080f8777a1c0ec9e3e079de
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 2 12:25:03 2009 -0700
MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.
commit 732aa0a87c7e8d8a10776b275712649954962414
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:58:56 2009 -0700
Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.
commit 669e5944b2fe0542a3b8dba0c441a94503e99fb0
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:43:02 2009 -0700
Proper support for end-of-stream signalling of MediaSources.
commit afb038f2dc594c742e554b2d42b86ffc7434e3fc
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 30 16:48:03 2009 -0700
Support for the "sniffing" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.
commit ed3644b8bd56807e1db4b32433a93a2467f1f3c5
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 13:27:52 2009 -0700
I don't think prepare should automatically start the player.
commit 11eb9b49dc4a0819d366682817cba68613f4fe12
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 11:09:22 2009 -0700
Somewhat better timing information implemented in the MP3Extractor.
commit cab023a1751735c0ed26c8493498a91d8644c6c9
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 25 15:41:56 2009 -0700
Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.
commit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:41:12 2009 -0700
Make sure we only allocate surface buffers if there is video to be played.
commit 7f85e7d92fe81740e102e09905b19354f4ac178e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:19:32 2009 -0700
Clean up a failed merge and implement stub for new API in MediaPlayerBase.
commit f0e9d494a4c03402ea7b54891848ca5a50c421b2
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 15:38:03 2009 -0700
Support yuv420->rgb565 conversion if hardware color conversion is unavailable.
commit 87223248b3099cd5261b94169f84cfd1eba56a8f
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 09:35:56 2009 -0700
Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.
commit e07e651f0325892b797f3eb64dbeca0f317afdfd
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 16:26:42 2009 -0700
Enable assertions in HTTPDataSource.
commit 0dc97adebea1721156880f4b3d5c70f8d50c53b2
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:39 2009 -0700
delete foo.
commit 7f05845dda496e7defee284d32509d127e785784
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:08 2009 -0700
added foo.
commit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 11:44:31 2009 -0700
Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.
commit d6286a6bbca639952491448fa3e609b775a8a814
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 17:11:49 2009 -0700
send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now "works" on the emulator, too.
commit 8d657e004677a7c5dae4479e8519bcaa94c18aad
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 11:58:55 2009 -0700
Instead of erasing codec specific data once it's been output to the omx node, retain the data and just rewind after a stop.
commit 279fede6ba35cbc37c35616c53406bf2c9720202
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 10:58:11 2009 -0700
Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.
commit 0f717f15a6328efd3f34082929cd8ad2351095a9
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 08:44:12 2009 -0700
Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer's notion of time mapping.
commit 0cfb63e33270daf9b215214608ab383f93a31823
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 14:25:48 2009 -0700
Massive rename.
commit 30ed8f476c4431a5275538958b3e281bd17d5eab
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 13:52:41 2009 -0700
send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.
commit b832d04011b2dd8a9632eb7e575bfe1addd1270d
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:21:17 2009 -0700
MediaBuffers can now be "clone()", they sit on top of the same data but have their own range and metadata. Once a clone's refcount drops to 0 it decrements the refcount on the original buffer.
commit 4e944672808bdf1ed40a69f3f602f93ebf7b4049
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:01:01 2009 -0700
Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.
commit ddb7529b4de4828db51432bd405fddd76cfa3b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 16:30:25 2009 -0700
More fudging with A/V sync...
commit 1e5a4d8df08237b58c06c6527a33152ae931addf
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 11:54:20 2009 -0700
API cleanup of MediaSource. Got rid of MediaRing as it really doesn't serve a purpose if OMX decoders are used.
commit 0953c65232aa9753d17d2e25c5f5526eb810cf13
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 16:59:19 2009 -0700
Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.
commit 2085b8ea9484a21fa11f94194a27405d413aeecc
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 10:17:01 2009 -0700
Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.
commit 471f143458a8a0d93cb1bf9568c63c3967279dc6
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 17:32:27 2009 -0700
Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.
commit 4010d371dbe62ce4971e13437776cba32cb0bb3d
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 16:01:07 2009 -0700
Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.
commit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 15:33:58 2009 -0700
Change the TimeSource interface's APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.
commit 08bb46fa61d12e852a424698ddb0c90700328f6e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 11:57:24 2009 -0700
Using framework's Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.
commit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 17:12:03 2009 -0700
MediaSources now publish their format.
commit 7e429a26c57bf936e1a08035d2d11839f9f00310
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 16:38:29 2009 -0700
MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.
commit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 14:39:55 2009 -0700
Sync sample seek support.
commit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 13:51:11 2009 -0700
Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn't. Fixes a problem with seek.
commit e57781d3b2c985a74cd8b60e7c8f2d576459d038
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 10:52:20 2009 -0700
First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.
commit 0551cd78fda78bf66877fb26c5a55e5ae23d8367
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 16:23:38 2009 -0700
Preliminary support for camera input.
commit f8ebafa65d10d5a06944de6b2e2992a33121b857
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 12:13:47 2009 -0700
Allow NativeMediaPlayer access to Surface's getISurface() method.
commit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:38:25 2009 -0700
Header files are now in their own genesis2 hierarchy below frameworks/base/include.
commit f49b8b234b8f6ce83148787eef540dd920f04aa6
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:22:03 2009 -0700
moved MPEG4Writer into libgenesis2.
commit 5224254919dac4728677335ea60429fa16f518b4
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:13:38 2009 -0700
Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.
commit f9a9d84f7e0465ef5d1938a068655ba39527cf99
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 16:43:11 2009 -0700
Support for getPosition() and getDuration().
commit 3206cc5140bcbc88be039f8d94b954af63e69752
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 15:37:45 2009 -0700
Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()
commit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 13:49:50 2009 -0700
Proper disconnection from the OMX service.
commit cdcf47a2c31599109ee42277c7fa14af3c600091
Author: Andreas Huber <andih@google.com>
Date: Tue May 26 17:27:06 2009 -0700
New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.
commit 0586af20ac9ae0403dd190bafd290b0f90549723
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 15:53:19 2009 -0700
Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.
commit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 13:35:30 2009 -0700
Support for http URIs in MediaPlayer, compensate for AudioTrack latency.
commit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 11:33:25 2009 -0700
Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don't shutdown cleanly within a second.
commit 1f0268f4f14ad5215668f34e06a420850174d665
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:33:16 2009 -0700
and foo.txt is gone again.
commit 0feca4e0919f345704d78ec78894bac5027bd5ed
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:28:49 2009 -0700
added foo.txt
commit 9c7d04b35cdc895a2de3602dc46522f608bd205f
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:28:04 2009 -0700
delete foo again
commit fec3ca1720992cce51b9a92b86b945da88a6b16c
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:27:45 2009 -0700
weird
commit 30a6571302333146e537e537a3a8986245cca87c
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:18:55 2009 -0700
reverse test
commit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:18:22 2009 -0700
test
commit a9eeafec6e46072cac41e54ebdbd153cb7ae7518
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 16:37:50 2009 -0700
Use the video ring again for now.
commit e05ff3d3c1c4f89ef499a2b172138a775fd694e3
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 15:42:19 2009 -0700
Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.
commit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 09:56:11 2009 -0700
Fix the build, all binder-related headers have moved and there's a new library libbinde
r to link against now.
commit 23e0a24404d16c898c2c6b3c7495ad303844bc71
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 08:42:04 2009 -0700
Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss & friends) not currently working.
commit 9cd77adb1ac194197364ffad00a0d7215f458e1a
Author: Andreas Huber <andih@google.com>
Date: Wed May 20 12:31:45 2009 -0700
New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.
commit 5c510fb55ffed7ec25305999ed9b6c1eec48d503
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 15:40:06 2009 -0700
Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.
commit f6c7a2040b8eb43326621f12c3a936e09b3a70e3
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 11:03:04 2009 -0700
The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.
commit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac
Author: Andreas Huber <andih@google.com>
Date: Thu May 14 12:39:34 2009 -0700
dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.
commit 380369f54a8027cbc9349305184d6bf527a24efe
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 17:32:00 2009 -0700
Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.
commit b5cada56b9089a23e0c461352a97dc71e08b424d
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 12:11:06 2009 -0700
Introduction of TimeSource class, clean shutdown of OMX Nodes.
commit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 17:11:56 2009 -0700
Helper classes MediaRing and MediaPlayer.
commit 9aaed8739b4bb941473da367fb88f63224d2f1b7
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 14:19:18 2009 -0700
Using mmap to map a file instead of going through FILE* improves performance, who knew?
commit ad097a78bbd002c59193ffdc39b64935928426c7
Author: Andreas Huber <andih@google.com>
Date: Mon May 11 16:42:42 2009 -0700
Added a performance test, refactored AudioDecoder a little.
commit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 16:19:29 2009 -0700
No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.
commit 858955b42c29b8033841a8caaa56c2a449810ef3
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 14:02:38 2009 -0700
Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.
commit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 13:21:45 2009 -0700
Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes
commit 3941fcf87a48dda81683df727dfb1381f62d9184
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 16:37:45 2009 -0700
some refactoring. Most streams play now.
commit d3152862840d4dd39068e5197bec8674f3d55dd5
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 15:37:32 2009 -0700
Misc. changes to support H264 decoding using the qcom hardware decoder
commit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 09:28:18 2009 -0700
Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.
commit fe6a50943f885e065d4061aa727a54417e9f36db
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 14:18:27 2009 -0700
Refactored commandline app instantiation of the decoder.
commit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 10:41:14 2009 -0700
Proper audio/video synchronization.
commit 569ee3a23f600f4b6b87c6178c0223b06e97f201
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 09:17:20 2009 -0700
Preliminary support for timestamps.
commit e4e302a89207550d8a7170d8c0afbd9c15047c84
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:13:12 2009 -0700
Another quick hack job to make CachingDataSource thread-safe as well.
commit dfb376a58bd7c09aa04e89558186fcfe13fe696c
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:08:14 2009 -0700
Quick rushjob to make FileSource and SampleTable thread safe.
commit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 17:22:04 2009 -0700
Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.
commit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 09:26:42 2009 -0700
Getting rid of old sample code to drive the OMXNode binder interface.
commit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 16:21:11 2009 -0700
Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder
commit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 15:56:19 2009 -0700
Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)
commit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 11:52:48 2009 -0700
Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.
commit 1470427866b0d3e0ce6848b4edc01c13a09be289
Author: Andreas Huber <andih@google.com>
Date: Thu Apr 30 15:19:31 2009 -0700
Another checkpoint, amr decoding now functional.
commit e612d044439f56331b6a2bc4a88622e04d4d42e7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 12:11:29 2009 -0700
string wrapper around String8, various fixes, shoutcast now works again.
commit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 11:08:18 2009 -0700
Initial check-in of OMXNode binder interface.
commit 7880d2957f74c0d7fba7679431ff5adb3780543b
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 10:05:01 2009 -0700
Initial check-in of both libgenesis2 and the genesis2 commandline tool.
2009-07-14 16:56:47 -07:00
|
|
|
: mCallback(NULL),
|
|
|
|
mCallbackCookie(NULL) {
|
2009-03-03 19:31:44 -08:00
|
|
|
mTrack = 0;
|
|
|
|
mStreamType = AudioSystem::MUSIC;
|
|
|
|
mLeftVolume = 1.0;
|
|
|
|
mRightVolume = 1.0;
|
|
|
|
mLatency = 0;
|
|
|
|
mMsecsPerFrame = 0;
|
2009-09-20 10:42:13 -07:00
|
|
|
mNumFramesWritten = 0;
|
2009-03-03 19:31:44 -08:00
|
|
|
setMinBufferCount();
|
|
|
|
}
|
|
|
|
|
|
|
|
MediaPlayerService::AudioOutput::~AudioOutput()
|
|
|
|
{
|
|
|
|
close();
|
|
|
|
}
|
|
|
|
|
|
|
|
void MediaPlayerService::AudioOutput::setMinBufferCount()
|
|
|
|
{
|
|
|
|
char value[PROPERTY_VALUE_MAX];
|
|
|
|
if (property_get("ro.kernel.qemu", value, 0)) {
|
|
|
|
mIsOnEmulator = true;
|
|
|
|
mMinBufferCount = 12; // to prevent systematic buffer underrun for emulator
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool MediaPlayerService::AudioOutput::isOnEmulator()
|
|
|
|
{
|
|
|
|
setMinBufferCount();
|
|
|
|
return mIsOnEmulator;
|
|
|
|
}
|
|
|
|
|
|
|
|
int MediaPlayerService::AudioOutput::getMinBufferCount()
|
|
|
|
{
|
|
|
|
setMinBufferCount();
|
|
|
|
return mMinBufferCount;
|
|
|
|
}
|
|
|
|
|
|
|
|
ssize_t MediaPlayerService::AudioOutput::bufferSize() const
|
|
|
|
{
|
|
|
|
if (mTrack == 0) return NO_INIT;
|
|
|
|
return mTrack->frameCount() * frameSize();
|
|
|
|
}
|
|
|
|
|
|
|
|
ssize_t MediaPlayerService::AudioOutput::frameCount() const
|
|
|
|
{
|
|
|
|
if (mTrack == 0) return NO_INIT;
|
|
|
|
return mTrack->frameCount();
|
|
|
|
}
|
|
|
|
|
|
|
|
ssize_t MediaPlayerService::AudioOutput::channelCount() const
|
|
|
|
{
|
|
|
|
if (mTrack == 0) return NO_INIT;
|
|
|
|
return mTrack->channelCount();
|
|
|
|
}
|
|
|
|
|
|
|
|
ssize_t MediaPlayerService::AudioOutput::frameSize() const
|
|
|
|
{
|
|
|
|
if (mTrack == 0) return NO_INIT;
|
|
|
|
return mTrack->frameSize();
|
|
|
|
}
|
|
|
|
|
|
|
|
uint32_t MediaPlayerService::AudioOutput::latency () const
|
|
|
|
{
|
|
|
|
return mLatency;
|
|
|
|
}
|
|
|
|
|
|
|
|
float MediaPlayerService::AudioOutput::msecsPerFrame() const
|
|
|
|
{
|
|
|
|
return mMsecsPerFrame;
|
|
|
|
}
|
|
|
|
|
Squashed commit of the following:
commit 8d179995654c19d9094e51989dc84ed0deba6e04
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 16:30:40 2009 -0700
Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.
commit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 14:06:00 2009 -0700
OMX::list_nodes API, stagefright --list now lists all available OMX components.
commit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 16:04:29 2009 -0700
Reenabled "record" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.
commit d363dd74f611577567c66d25900d6264c306468c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:59:58 2009 -0700
Make non-socket communication in IOMX the default.
commit e89fc82c4fd138c88339887baf72f1d0e67f8660
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:32:33 2009 -0700
The OMX interface now optionally supports communication through the binder only (no sockets involved)
commit 28611de11223fba65299787cdd33f7fdbd6a60a3
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 15:09:13 2009 -0700
Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}
commit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 12:21:46 2009 -0700
Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...
commit ae209a2b5d09caed5dd383c910f238926aaa8fc6
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 09:33:29 2009 -0700
Simple video decoder performance test in "stagefright" commandline tool.
commit 59fe7840111d6f46dd3c48f4950146aed962dbd2
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 16:05:12 2009 -0700
StagefrightPlayer: Properly publish video dimensions by notifying the listener.
commit 51b6598f0e47be5e12d77f1d14e111e71c593638
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 11:38:15 2009 -0700
MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.
commit 31ce53375d748da3e7d30e993ce89dae97fd65ea
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 17:23:37 2009 -0700
Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.
commit a23e312b10631a5d47f5c9831205beac6b84ab36
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 15:10:13 2009 -0700
IGenesisPlayer and friends are no more, java interface now uses local playback instead
of playing inside the media server process.
commit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 13:17:03 2009 -0700
MP3 extractor now supports seeking (only fixed bitrate files currently supported)
commit 96a790405763bfa738d1c6845c99a9fdf579b66f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 7 10:53:54 2009 -0700
Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.
commit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 16:40:02 2009 -0700
Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.
commit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 12:18:29 2009 -0700
Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.
commit 88bffc5ed4033a607080f8777a1c0ec9e3e079de
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 2 12:25:03 2009 -0700
MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.
commit 732aa0a87c7e8d8a10776b275712649954962414
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:58:56 2009 -0700
Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.
commit 669e5944b2fe0542a3b8dba0c441a94503e99fb0
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:43:02 2009 -0700
Proper support for end-of-stream signalling of MediaSources.
commit afb038f2dc594c742e554b2d42b86ffc7434e3fc
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 30 16:48:03 2009 -0700
Support for the "sniffing" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.
commit ed3644b8bd56807e1db4b32433a93a2467f1f3c5
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 13:27:52 2009 -0700
I don't think prepare should automatically start the player.
commit 11eb9b49dc4a0819d366682817cba68613f4fe12
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 11:09:22 2009 -0700
Somewhat better timing information implemented in the MP3Extractor.
commit cab023a1751735c0ed26c8493498a91d8644c6c9
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 25 15:41:56 2009 -0700
Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.
commit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:41:12 2009 -0700
Make sure we only allocate surface buffers if there is video to be played.
commit 7f85e7d92fe81740e102e09905b19354f4ac178e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:19:32 2009 -0700
Clean up a failed merge and implement stub for new API in MediaPlayerBase.
commit f0e9d494a4c03402ea7b54891848ca5a50c421b2
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 15:38:03 2009 -0700
Support yuv420->rgb565 conversion if hardware color conversion is unavailable.
commit 87223248b3099cd5261b94169f84cfd1eba56a8f
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 09:35:56 2009 -0700
Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.
commit e07e651f0325892b797f3eb64dbeca0f317afdfd
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 16:26:42 2009 -0700
Enable assertions in HTTPDataSource.
commit 0dc97adebea1721156880f4b3d5c70f8d50c53b2
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:39 2009 -0700
delete foo.
commit 7f05845dda496e7defee284d32509d127e785784
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:08 2009 -0700
added foo.
commit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 11:44:31 2009 -0700
Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.
commit d6286a6bbca639952491448fa3e609b775a8a814
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 17:11:49 2009 -0700
send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now "works" on the emulator, too.
commit 8d657e004677a7c5dae4479e8519bcaa94c18aad
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 11:58:55 2009 -0700
Instead of erasing codec specific data once it's been output to the omx node, retain the data and just rewind after a stop.
commit 279fede6ba35cbc37c35616c53406bf2c9720202
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 10:58:11 2009 -0700
Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.
commit 0f717f15a6328efd3f34082929cd8ad2351095a9
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 08:44:12 2009 -0700
Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer's notion of time mapping.
commit 0cfb63e33270daf9b215214608ab383f93a31823
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 14:25:48 2009 -0700
Massive rename.
commit 30ed8f476c4431a5275538958b3e281bd17d5eab
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 13:52:41 2009 -0700
send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.
commit b832d04011b2dd8a9632eb7e575bfe1addd1270d
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:21:17 2009 -0700
MediaBuffers can now be "clone()", they sit on top of the same data but have their own range and metadata. Once a clone's refcount drops to 0 it decrements the refcount on the original buffer.
commit 4e944672808bdf1ed40a69f3f602f93ebf7b4049
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:01:01 2009 -0700
Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.
commit ddb7529b4de4828db51432bd405fddd76cfa3b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 16:30:25 2009 -0700
More fudging with A/V sync...
commit 1e5a4d8df08237b58c06c6527a33152ae931addf
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 11:54:20 2009 -0700
API cleanup of MediaSource. Got rid of MediaRing as it really doesn't serve a purpose if OMX decoders are used.
commit 0953c65232aa9753d17d2e25c5f5526eb810cf13
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 16:59:19 2009 -0700
Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.
commit 2085b8ea9484a21fa11f94194a27405d413aeecc
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 10:17:01 2009 -0700
Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.
commit 471f143458a8a0d93cb1bf9568c63c3967279dc6
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 17:32:27 2009 -0700
Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.
commit 4010d371dbe62ce4971e13437776cba32cb0bb3d
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 16:01:07 2009 -0700
Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.
commit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 15:33:58 2009 -0700
Change the TimeSource interface's APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.
commit 08bb46fa61d12e852a424698ddb0c90700328f6e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 11:57:24 2009 -0700
Using framework's Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.
commit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 17:12:03 2009 -0700
MediaSources now publish their format.
commit 7e429a26c57bf936e1a08035d2d11839f9f00310
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 16:38:29 2009 -0700
MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.
commit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 14:39:55 2009 -0700
Sync sample seek support.
commit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 13:51:11 2009 -0700
Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn't. Fixes a problem with seek.
commit e57781d3b2c985a74cd8b60e7c8f2d576459d038
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 10:52:20 2009 -0700
First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.
commit 0551cd78fda78bf66877fb26c5a55e5ae23d8367
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 16:23:38 2009 -0700
Preliminary support for camera input.
commit f8ebafa65d10d5a06944de6b2e2992a33121b857
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 12:13:47 2009 -0700
Allow NativeMediaPlayer access to Surface's getISurface() method.
commit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:38:25 2009 -0700
Header files are now in their own genesis2 hierarchy below frameworks/base/include.
commit f49b8b234b8f6ce83148787eef540dd920f04aa6
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:22:03 2009 -0700
moved MPEG4Writer into libgenesis2.
commit 5224254919dac4728677335ea60429fa16f518b4
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:13:38 2009 -0700
Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.
commit f9a9d84f7e0465ef5d1938a068655ba39527cf99
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 16:43:11 2009 -0700
Support for getPosition() and getDuration().
commit 3206cc5140bcbc88be039f8d94b954af63e69752
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 15:37:45 2009 -0700
Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()
commit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 13:49:50 2009 -0700
Proper disconnection from the OMX service.
commit cdcf47a2c31599109ee42277c7fa14af3c600091
Author: Andreas Huber <andih@google.com>
Date: Tue May 26 17:27:06 2009 -0700
New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.
commit 0586af20ac9ae0403dd190bafd290b0f90549723
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 15:53:19 2009 -0700
Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.
commit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 13:35:30 2009 -0700
Support for http URIs in MediaPlayer, compensate for AudioTrack latency.
commit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 11:33:25 2009 -0700
Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don't shutdown cleanly within a second.
commit 1f0268f4f14ad5215668f34e06a420850174d665
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:33:16 2009 -0700
and foo.txt is gone again.
commit 0feca4e0919f345704d78ec78894bac5027bd5ed
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:28:49 2009 -0700
added foo.txt
commit 9c7d04b35cdc895a2de3602dc46522f608bd205f
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:28:04 2009 -0700
delete foo again
commit fec3ca1720992cce51b9a92b86b945da88a6b16c
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:27:45 2009 -0700
weird
commit 30a6571302333146e537e537a3a8986245cca87c
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:18:55 2009 -0700
reverse test
commit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:18:22 2009 -0700
test
commit a9eeafec6e46072cac41e54ebdbd153cb7ae7518
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 16:37:50 2009 -0700
Use the video ring again for now.
commit e05ff3d3c1c4f89ef499a2b172138a775fd694e3
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 15:42:19 2009 -0700
Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.
commit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 09:56:11 2009 -0700
Fix the build, all binder-related headers have moved and there's a new library libbinde
r to link against now.
commit 23e0a24404d16c898c2c6b3c7495ad303844bc71
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 08:42:04 2009 -0700
Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss & friends) not currently working.
commit 9cd77adb1ac194197364ffad00a0d7215f458e1a
Author: Andreas Huber <andih@google.com>
Date: Wed May 20 12:31:45 2009 -0700
New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.
commit 5c510fb55ffed7ec25305999ed9b6c1eec48d503
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 15:40:06 2009 -0700
Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.
commit f6c7a2040b8eb43326621f12c3a936e09b3a70e3
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 11:03:04 2009 -0700
The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.
commit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac
Author: Andreas Huber <andih@google.com>
Date: Thu May 14 12:39:34 2009 -0700
dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.
commit 380369f54a8027cbc9349305184d6bf527a24efe
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 17:32:00 2009 -0700
Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.
commit b5cada56b9089a23e0c461352a97dc71e08b424d
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 12:11:06 2009 -0700
Introduction of TimeSource class, clean shutdown of OMX Nodes.
commit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 17:11:56 2009 -0700
Helper classes MediaRing and MediaPlayer.
commit 9aaed8739b4bb941473da367fb88f63224d2f1b7
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 14:19:18 2009 -0700
Using mmap to map a file instead of going through FILE* improves performance, who knew?
commit ad097a78bbd002c59193ffdc39b64935928426c7
Author: Andreas Huber <andih@google.com>
Date: Mon May 11 16:42:42 2009 -0700
Added a performance test, refactored AudioDecoder a little.
commit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 16:19:29 2009 -0700
No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.
commit 858955b42c29b8033841a8caaa56c2a449810ef3
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 14:02:38 2009 -0700
Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.
commit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 13:21:45 2009 -0700
Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes
commit 3941fcf87a48dda81683df727dfb1381f62d9184
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 16:37:45 2009 -0700
some refactoring. Most streams play now.
commit d3152862840d4dd39068e5197bec8674f3d55dd5
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 15:37:32 2009 -0700
Misc. changes to support H264 decoding using the qcom hardware decoder
commit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 09:28:18 2009 -0700
Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.
commit fe6a50943f885e065d4061aa727a54417e9f36db
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 14:18:27 2009 -0700
Refactored commandline app instantiation of the decoder.
commit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 10:41:14 2009 -0700
Proper audio/video synchronization.
commit 569ee3a23f600f4b6b87c6178c0223b06e97f201
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 09:17:20 2009 -0700
Preliminary support for timestamps.
commit e4e302a89207550d8a7170d8c0afbd9c15047c84
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:13:12 2009 -0700
Another quick hack job to make CachingDataSource thread-safe as well.
commit dfb376a58bd7c09aa04e89558186fcfe13fe696c
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:08:14 2009 -0700
Quick rushjob to make FileSource and SampleTable thread safe.
commit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 17:22:04 2009 -0700
Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.
commit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 09:26:42 2009 -0700
Getting rid of old sample code to drive the OMXNode binder interface.
commit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 16:21:11 2009 -0700
Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder
commit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 15:56:19 2009 -0700
Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)
commit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 11:52:48 2009 -0700
Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.
commit 1470427866b0d3e0ce6848b4edc01c13a09be289
Author: Andreas Huber <andih@google.com>
Date: Thu Apr 30 15:19:31 2009 -0700
Another checkpoint, amr decoding now functional.
commit e612d044439f56331b6a2bc4a88622e04d4d42e7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 12:11:29 2009 -0700
string wrapper around String8, various fixes, shoutcast now works again.
commit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 11:08:18 2009 -0700
Initial check-in of OMXNode binder interface.
commit 7880d2957f74c0d7fba7679431ff5adb3780543b
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 10:05:01 2009 -0700
Initial check-in of both libgenesis2 and the genesis2 commandline tool.
2009-07-14 16:56:47 -07:00
|
|
|
status_t MediaPlayerService::AudioOutput::open(
|
|
|
|
uint32_t sampleRate, int channelCount, int format, int bufferCount,
|
|
|
|
AudioCallback cb, void *cookie)
|
2009-03-03 19:31:44 -08:00
|
|
|
{
|
Squashed commit of the following:
commit 8d179995654c19d9094e51989dc84ed0deba6e04
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 16:30:40 2009 -0700
Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.
commit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 14:06:00 2009 -0700
OMX::list_nodes API, stagefright --list now lists all available OMX components.
commit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 16:04:29 2009 -0700
Reenabled "record" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.
commit d363dd74f611577567c66d25900d6264c306468c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:59:58 2009 -0700
Make non-socket communication in IOMX the default.
commit e89fc82c4fd138c88339887baf72f1d0e67f8660
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:32:33 2009 -0700
The OMX interface now optionally supports communication through the binder only (no sockets involved)
commit 28611de11223fba65299787cdd33f7fdbd6a60a3
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 15:09:13 2009 -0700
Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}
commit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 12:21:46 2009 -0700
Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...
commit ae209a2b5d09caed5dd383c910f238926aaa8fc6
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 09:33:29 2009 -0700
Simple video decoder performance test in "stagefright" commandline tool.
commit 59fe7840111d6f46dd3c48f4950146aed962dbd2
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 16:05:12 2009 -0700
StagefrightPlayer: Properly publish video dimensions by notifying the listener.
commit 51b6598f0e47be5e12d77f1d14e111e71c593638
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 11:38:15 2009 -0700
MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.
commit 31ce53375d748da3e7d30e993ce89dae97fd65ea
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 17:23:37 2009 -0700
Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.
commit a23e312b10631a5d47f5c9831205beac6b84ab36
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 15:10:13 2009 -0700
IGenesisPlayer and friends are no more, java interface now uses local playback instead
of playing inside the media server process.
commit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 13:17:03 2009 -0700
MP3 extractor now supports seeking (only fixed bitrate files currently supported)
commit 96a790405763bfa738d1c6845c99a9fdf579b66f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 7 10:53:54 2009 -0700
Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.
commit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 16:40:02 2009 -0700
Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.
commit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 12:18:29 2009 -0700
Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.
commit 88bffc5ed4033a607080f8777a1c0ec9e3e079de
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 2 12:25:03 2009 -0700
MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.
commit 732aa0a87c7e8d8a10776b275712649954962414
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:58:56 2009 -0700
Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.
commit 669e5944b2fe0542a3b8dba0c441a94503e99fb0
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:43:02 2009 -0700
Proper support for end-of-stream signalling of MediaSources.
commit afb038f2dc594c742e554b2d42b86ffc7434e3fc
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 30 16:48:03 2009 -0700
Support for the "sniffing" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.
commit ed3644b8bd56807e1db4b32433a93a2467f1f3c5
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 13:27:52 2009 -0700
I don't think prepare should automatically start the player.
commit 11eb9b49dc4a0819d366682817cba68613f4fe12
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 11:09:22 2009 -0700
Somewhat better timing information implemented in the MP3Extractor.
commit cab023a1751735c0ed26c8493498a91d8644c6c9
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 25 15:41:56 2009 -0700
Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.
commit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:41:12 2009 -0700
Make sure we only allocate surface buffers if there is video to be played.
commit 7f85e7d92fe81740e102e09905b19354f4ac178e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:19:32 2009 -0700
Clean up a failed merge and implement stub for new API in MediaPlayerBase.
commit f0e9d494a4c03402ea7b54891848ca5a50c421b2
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 15:38:03 2009 -0700
Support yuv420->rgb565 conversion if hardware color conversion is unavailable.
commit 87223248b3099cd5261b94169f84cfd1eba56a8f
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 09:35:56 2009 -0700
Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.
commit e07e651f0325892b797f3eb64dbeca0f317afdfd
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 16:26:42 2009 -0700
Enable assertions in HTTPDataSource.
commit 0dc97adebea1721156880f4b3d5c70f8d50c53b2
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:39 2009 -0700
delete foo.
commit 7f05845dda496e7defee284d32509d127e785784
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:08 2009 -0700
added foo.
commit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 11:44:31 2009 -0700
Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.
commit d6286a6bbca639952491448fa3e609b775a8a814
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 17:11:49 2009 -0700
send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now "works" on the emulator, too.
commit 8d657e004677a7c5dae4479e8519bcaa94c18aad
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 11:58:55 2009 -0700
Instead of erasing codec specific data once it's been output to the omx node, retain the data and just rewind after a stop.
commit 279fede6ba35cbc37c35616c53406bf2c9720202
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 10:58:11 2009 -0700
Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.
commit 0f717f15a6328efd3f34082929cd8ad2351095a9
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 08:44:12 2009 -0700
Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer's notion of time mapping.
commit 0cfb63e33270daf9b215214608ab383f93a31823
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 14:25:48 2009 -0700
Massive rename.
commit 30ed8f476c4431a5275538958b3e281bd17d5eab
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 13:52:41 2009 -0700
send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.
commit b832d04011b2dd8a9632eb7e575bfe1addd1270d
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:21:17 2009 -0700
MediaBuffers can now be "clone()", they sit on top of the same data but have their own range and metadata. Once a clone's refcount drops to 0 it decrements the refcount on the original buffer.
commit 4e944672808bdf1ed40a69f3f602f93ebf7b4049
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:01:01 2009 -0700
Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.
commit ddb7529b4de4828db51432bd405fddd76cfa3b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 16:30:25 2009 -0700
More fudging with A/V sync...
commit 1e5a4d8df08237b58c06c6527a33152ae931addf
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 11:54:20 2009 -0700
API cleanup of MediaSource. Got rid of MediaRing as it really doesn't serve a purpose if OMX decoders are used.
commit 0953c65232aa9753d17d2e25c5f5526eb810cf13
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 16:59:19 2009 -0700
Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.
commit 2085b8ea9484a21fa11f94194a27405d413aeecc
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 10:17:01 2009 -0700
Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.
commit 471f143458a8a0d93cb1bf9568c63c3967279dc6
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 17:32:27 2009 -0700
Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.
commit 4010d371dbe62ce4971e13437776cba32cb0bb3d
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 16:01:07 2009 -0700
Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.
commit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 15:33:58 2009 -0700
Change the TimeSource interface's APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.
commit 08bb46fa61d12e852a424698ddb0c90700328f6e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 11:57:24 2009 -0700
Using framework's Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.
commit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 17:12:03 2009 -0700
MediaSources now publish their format.
commit 7e429a26c57bf936e1a08035d2d11839f9f00310
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 16:38:29 2009 -0700
MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.
commit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 14:39:55 2009 -0700
Sync sample seek support.
commit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 13:51:11 2009 -0700
Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn't. Fixes a problem with seek.
commit e57781d3b2c985a74cd8b60e7c8f2d576459d038
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 10:52:20 2009 -0700
First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.
commit 0551cd78fda78bf66877fb26c5a55e5ae23d8367
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 16:23:38 2009 -0700
Preliminary support for camera input.
commit f8ebafa65d10d5a06944de6b2e2992a33121b857
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 12:13:47 2009 -0700
Allow NativeMediaPlayer access to Surface's getISurface() method.
commit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:38:25 2009 -0700
Header files are now in their own genesis2 hierarchy below frameworks/base/include.
commit f49b8b234b8f6ce83148787eef540dd920f04aa6
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:22:03 2009 -0700
moved MPEG4Writer into libgenesis2.
commit 5224254919dac4728677335ea60429fa16f518b4
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:13:38 2009 -0700
Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.
commit f9a9d84f7e0465ef5d1938a068655ba39527cf99
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 16:43:11 2009 -0700
Support for getPosition() and getDuration().
commit 3206cc5140bcbc88be039f8d94b954af63e69752
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 15:37:45 2009 -0700
Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()
commit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 13:49:50 2009 -0700
Proper disconnection from the OMX service.
commit cdcf47a2c31599109ee42277c7fa14af3c600091
Author: Andreas Huber <andih@google.com>
Date: Tue May 26 17:27:06 2009 -0700
New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.
commit 0586af20ac9ae0403dd190bafd290b0f90549723
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 15:53:19 2009 -0700
Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.
commit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 13:35:30 2009 -0700
Support for http URIs in MediaPlayer, compensate for AudioTrack latency.
commit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 11:33:25 2009 -0700
Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don't shutdown cleanly within a second.
commit 1f0268f4f14ad5215668f34e06a420850174d665
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:33:16 2009 -0700
and foo.txt is gone again.
commit 0feca4e0919f345704d78ec78894bac5027bd5ed
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:28:49 2009 -0700
added foo.txt
commit 9c7d04b35cdc895a2de3602dc46522f608bd205f
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:28:04 2009 -0700
delete foo again
commit fec3ca1720992cce51b9a92b86b945da88a6b16c
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:27:45 2009 -0700
weird
commit 30a6571302333146e537e537a3a8986245cca87c
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:18:55 2009 -0700
reverse test
commit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:18:22 2009 -0700
test
commit a9eeafec6e46072cac41e54ebdbd153cb7ae7518
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 16:37:50 2009 -0700
Use the video ring again for now.
commit e05ff3d3c1c4f89ef499a2b172138a775fd694e3
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 15:42:19 2009 -0700
Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.
commit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 09:56:11 2009 -0700
Fix the build, all binder-related headers have moved and there's a new library libbinde
r to link against now.
commit 23e0a24404d16c898c2c6b3c7495ad303844bc71
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 08:42:04 2009 -0700
Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss & friends) not currently working.
commit 9cd77adb1ac194197364ffad00a0d7215f458e1a
Author: Andreas Huber <andih@google.com>
Date: Wed May 20 12:31:45 2009 -0700
New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.
commit 5c510fb55ffed7ec25305999ed9b6c1eec48d503
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 15:40:06 2009 -0700
Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.
commit f6c7a2040b8eb43326621f12c3a936e09b3a70e3
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 11:03:04 2009 -0700
The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.
commit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac
Author: Andreas Huber <andih@google.com>
Date: Thu May 14 12:39:34 2009 -0700
dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.
commit 380369f54a8027cbc9349305184d6bf527a24efe
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 17:32:00 2009 -0700
Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.
commit b5cada56b9089a23e0c461352a97dc71e08b424d
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 12:11:06 2009 -0700
Introduction of TimeSource class, clean shutdown of OMX Nodes.
commit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 17:11:56 2009 -0700
Helper classes MediaRing and MediaPlayer.
commit 9aaed8739b4bb941473da367fb88f63224d2f1b7
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 14:19:18 2009 -0700
Using mmap to map a file instead of going through FILE* improves performance, who knew?
commit ad097a78bbd002c59193ffdc39b64935928426c7
Author: Andreas Huber <andih@google.com>
Date: Mon May 11 16:42:42 2009 -0700
Added a performance test, refactored AudioDecoder a little.
commit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 16:19:29 2009 -0700
No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.
commit 858955b42c29b8033841a8caaa56c2a449810ef3
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 14:02:38 2009 -0700
Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.
commit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 13:21:45 2009 -0700
Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes
commit 3941fcf87a48dda81683df727dfb1381f62d9184
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 16:37:45 2009 -0700
some refactoring. Most streams play now.
commit d3152862840d4dd39068e5197bec8674f3d55dd5
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 15:37:32 2009 -0700
Misc. changes to support H264 decoding using the qcom hardware decoder
commit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 09:28:18 2009 -0700
Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.
commit fe6a50943f885e065d4061aa727a54417e9f36db
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 14:18:27 2009 -0700
Refactored commandline app instantiation of the decoder.
commit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 10:41:14 2009 -0700
Proper audio/video synchronization.
commit 569ee3a23f600f4b6b87c6178c0223b06e97f201
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 09:17:20 2009 -0700
Preliminary support for timestamps.
commit e4e302a89207550d8a7170d8c0afbd9c15047c84
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:13:12 2009 -0700
Another quick hack job to make CachingDataSource thread-safe as well.
commit dfb376a58bd7c09aa04e89558186fcfe13fe696c
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:08:14 2009 -0700
Quick rushjob to make FileSource and SampleTable thread safe.
commit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 17:22:04 2009 -0700
Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.
commit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 09:26:42 2009 -0700
Getting rid of old sample code to drive the OMXNode binder interface.
commit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 16:21:11 2009 -0700
Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder
commit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 15:56:19 2009 -0700
Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)
commit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 11:52:48 2009 -0700
Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.
commit 1470427866b0d3e0ce6848b4edc01c13a09be289
Author: Andreas Huber <andih@google.com>
Date: Thu Apr 30 15:19:31 2009 -0700
Another checkpoint, amr decoding now functional.
commit e612d044439f56331b6a2bc4a88622e04d4d42e7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 12:11:29 2009 -0700
string wrapper around String8, various fixes, shoutcast now works again.
commit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 11:08:18 2009 -0700
Initial check-in of OMXNode binder interface.
commit 7880d2957f74c0d7fba7679431ff5adb3780543b
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 10:05:01 2009 -0700
Initial check-in of both libgenesis2 and the genesis2 commandline tool.
2009-07-14 16:56:47 -07:00
|
|
|
mCallback = cb;
|
|
|
|
mCallbackCookie = cookie;
|
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
// Check argument "bufferCount" against the mininum buffer count
|
|
|
|
if (bufferCount < mMinBufferCount) {
|
|
|
|
LOGD("bufferCount (%d) is too small and increased to %d", bufferCount, mMinBufferCount);
|
|
|
|
bufferCount = mMinBufferCount;
|
|
|
|
|
|
|
|
}
|
|
|
|
LOGV("open(%u, %d, %d, %d)", sampleRate, channelCount, format, bufferCount);
|
|
|
|
if (mTrack) close();
|
|
|
|
int afSampleRate;
|
|
|
|
int afFrameCount;
|
|
|
|
int frameCount;
|
|
|
|
|
|
|
|
if (AudioSystem::getOutputFrameCount(&afFrameCount, mStreamType) != NO_ERROR) {
|
|
|
|
return NO_INIT;
|
|
|
|
}
|
|
|
|
if (AudioSystem::getOutputSamplingRate(&afSampleRate, mStreamType) != NO_ERROR) {
|
|
|
|
return NO_INIT;
|
|
|
|
}
|
|
|
|
|
|
|
|
frameCount = (sampleRate*afFrameCount*bufferCount)/afSampleRate;
|
Squashed commit of the following:
commit 8d179995654c19d9094e51989dc84ed0deba6e04
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 16:30:40 2009 -0700
Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.
commit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 14:06:00 2009 -0700
OMX::list_nodes API, stagefright --list now lists all available OMX components.
commit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 16:04:29 2009 -0700
Reenabled "record" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.
commit d363dd74f611577567c66d25900d6264c306468c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:59:58 2009 -0700
Make non-socket communication in IOMX the default.
commit e89fc82c4fd138c88339887baf72f1d0e67f8660
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:32:33 2009 -0700
The OMX interface now optionally supports communication through the binder only (no sockets involved)
commit 28611de11223fba65299787cdd33f7fdbd6a60a3
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 15:09:13 2009 -0700
Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}
commit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 12:21:46 2009 -0700
Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...
commit ae209a2b5d09caed5dd383c910f238926aaa8fc6
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 09:33:29 2009 -0700
Simple video decoder performance test in "stagefright" commandline tool.
commit 59fe7840111d6f46dd3c48f4950146aed962dbd2
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 16:05:12 2009 -0700
StagefrightPlayer: Properly publish video dimensions by notifying the listener.
commit 51b6598f0e47be5e12d77f1d14e111e71c593638
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 11:38:15 2009 -0700
MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.
commit 31ce53375d748da3e7d30e993ce89dae97fd65ea
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 17:23:37 2009 -0700
Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.
commit a23e312b10631a5d47f5c9831205beac6b84ab36
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 15:10:13 2009 -0700
IGenesisPlayer and friends are no more, java interface now uses local playback instead
of playing inside the media server process.
commit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 13:17:03 2009 -0700
MP3 extractor now supports seeking (only fixed bitrate files currently supported)
commit 96a790405763bfa738d1c6845c99a9fdf579b66f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 7 10:53:54 2009 -0700
Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.
commit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 16:40:02 2009 -0700
Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.
commit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 12:18:29 2009 -0700
Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.
commit 88bffc5ed4033a607080f8777a1c0ec9e3e079de
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 2 12:25:03 2009 -0700
MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.
commit 732aa0a87c7e8d8a10776b275712649954962414
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:58:56 2009 -0700
Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.
commit 669e5944b2fe0542a3b8dba0c441a94503e99fb0
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:43:02 2009 -0700
Proper support for end-of-stream signalling of MediaSources.
commit afb038f2dc594c742e554b2d42b86ffc7434e3fc
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 30 16:48:03 2009 -0700
Support for the "sniffing" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.
commit ed3644b8bd56807e1db4b32433a93a2467f1f3c5
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 13:27:52 2009 -0700
I don't think prepare should automatically start the player.
commit 11eb9b49dc4a0819d366682817cba68613f4fe12
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 11:09:22 2009 -0700
Somewhat better timing information implemented in the MP3Extractor.
commit cab023a1751735c0ed26c8493498a91d8644c6c9
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 25 15:41:56 2009 -0700
Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.
commit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:41:12 2009 -0700
Make sure we only allocate surface buffers if there is video to be played.
commit 7f85e7d92fe81740e102e09905b19354f4ac178e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:19:32 2009 -0700
Clean up a failed merge and implement stub for new API in MediaPlayerBase.
commit f0e9d494a4c03402ea7b54891848ca5a50c421b2
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 15:38:03 2009 -0700
Support yuv420->rgb565 conversion if hardware color conversion is unavailable.
commit 87223248b3099cd5261b94169f84cfd1eba56a8f
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 09:35:56 2009 -0700
Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.
commit e07e651f0325892b797f3eb64dbeca0f317afdfd
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 16:26:42 2009 -0700
Enable assertions in HTTPDataSource.
commit 0dc97adebea1721156880f4b3d5c70f8d50c53b2
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:39 2009 -0700
delete foo.
commit 7f05845dda496e7defee284d32509d127e785784
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:08 2009 -0700
added foo.
commit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 11:44:31 2009 -0700
Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.
commit d6286a6bbca639952491448fa3e609b775a8a814
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 17:11:49 2009 -0700
send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now "works" on the emulator, too.
commit 8d657e004677a7c5dae4479e8519bcaa94c18aad
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 11:58:55 2009 -0700
Instead of erasing codec specific data once it's been output to the omx node, retain the data and just rewind after a stop.
commit 279fede6ba35cbc37c35616c53406bf2c9720202
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 10:58:11 2009 -0700
Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.
commit 0f717f15a6328efd3f34082929cd8ad2351095a9
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 08:44:12 2009 -0700
Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer's notion of time mapping.
commit 0cfb63e33270daf9b215214608ab383f93a31823
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 14:25:48 2009 -0700
Massive rename.
commit 30ed8f476c4431a5275538958b3e281bd17d5eab
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 13:52:41 2009 -0700
send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.
commit b832d04011b2dd8a9632eb7e575bfe1addd1270d
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:21:17 2009 -0700
MediaBuffers can now be "clone()", they sit on top of the same data but have their own range and metadata. Once a clone's refcount drops to 0 it decrements the refcount on the original buffer.
commit 4e944672808bdf1ed40a69f3f602f93ebf7b4049
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:01:01 2009 -0700
Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.
commit ddb7529b4de4828db51432bd405fddd76cfa3b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 16:30:25 2009 -0700
More fudging with A/V sync...
commit 1e5a4d8df08237b58c06c6527a33152ae931addf
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 11:54:20 2009 -0700
API cleanup of MediaSource. Got rid of MediaRing as it really doesn't serve a purpose if OMX decoders are used.
commit 0953c65232aa9753d17d2e25c5f5526eb810cf13
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 16:59:19 2009 -0700
Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.
commit 2085b8ea9484a21fa11f94194a27405d413aeecc
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 10:17:01 2009 -0700
Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.
commit 471f143458a8a0d93cb1bf9568c63c3967279dc6
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 17:32:27 2009 -0700
Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.
commit 4010d371dbe62ce4971e13437776cba32cb0bb3d
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 16:01:07 2009 -0700
Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.
commit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 15:33:58 2009 -0700
Change the TimeSource interface's APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.
commit 08bb46fa61d12e852a424698ddb0c90700328f6e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 11:57:24 2009 -0700
Using framework's Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.
commit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 17:12:03 2009 -0700
MediaSources now publish their format.
commit 7e429a26c57bf936e1a08035d2d11839f9f00310
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 16:38:29 2009 -0700
MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.
commit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 14:39:55 2009 -0700
Sync sample seek support.
commit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 13:51:11 2009 -0700
Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn't. Fixes a problem with seek.
commit e57781d3b2c985a74cd8b60e7c8f2d576459d038
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 10:52:20 2009 -0700
First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.
commit 0551cd78fda78bf66877fb26c5a55e5ae23d8367
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 16:23:38 2009 -0700
Preliminary support for camera input.
commit f8ebafa65d10d5a06944de6b2e2992a33121b857
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 12:13:47 2009 -0700
Allow NativeMediaPlayer access to Surface's getISurface() method.
commit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:38:25 2009 -0700
Header files are now in their own genesis2 hierarchy below frameworks/base/include.
commit f49b8b234b8f6ce83148787eef540dd920f04aa6
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:22:03 2009 -0700
moved MPEG4Writer into libgenesis2.
commit 5224254919dac4728677335ea60429fa16f518b4
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:13:38 2009 -0700
Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.
commit f9a9d84f7e0465ef5d1938a068655ba39527cf99
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 16:43:11 2009 -0700
Support for getPosition() and getDuration().
commit 3206cc5140bcbc88be039f8d94b954af63e69752
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 15:37:45 2009 -0700
Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()
commit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 13:49:50 2009 -0700
Proper disconnection from the OMX service.
commit cdcf47a2c31599109ee42277c7fa14af3c600091
Author: Andreas Huber <andih@google.com>
Date: Tue May 26 17:27:06 2009 -0700
New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.
commit 0586af20ac9ae0403dd190bafd290b0f90549723
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 15:53:19 2009 -0700
Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.
commit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 13:35:30 2009 -0700
Support for http URIs in MediaPlayer, compensate for AudioTrack latency.
commit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 11:33:25 2009 -0700
Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don't shutdown cleanly within a second.
commit 1f0268f4f14ad5215668f34e06a420850174d665
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:33:16 2009 -0700
and foo.txt is gone again.
commit 0feca4e0919f345704d78ec78894bac5027bd5ed
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:28:49 2009 -0700
added foo.txt
commit 9c7d04b35cdc895a2de3602dc46522f608bd205f
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:28:04 2009 -0700
delete foo again
commit fec3ca1720992cce51b9a92b86b945da88a6b16c
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:27:45 2009 -0700
weird
commit 30a6571302333146e537e537a3a8986245cca87c
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:18:55 2009 -0700
reverse test
commit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:18:22 2009 -0700
test
commit a9eeafec6e46072cac41e54ebdbd153cb7ae7518
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 16:37:50 2009 -0700
Use the video ring again for now.
commit e05ff3d3c1c4f89ef499a2b172138a775fd694e3
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 15:42:19 2009 -0700
Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.
commit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 09:56:11 2009 -0700
Fix the build, all binder-related headers have moved and there's a new library libbinde
r to link against now.
commit 23e0a24404d16c898c2c6b3c7495ad303844bc71
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 08:42:04 2009 -0700
Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss & friends) not currently working.
commit 9cd77adb1ac194197364ffad00a0d7215f458e1a
Author: Andreas Huber <andih@google.com>
Date: Wed May 20 12:31:45 2009 -0700
New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.
commit 5c510fb55ffed7ec25305999ed9b6c1eec48d503
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 15:40:06 2009 -0700
Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.
commit f6c7a2040b8eb43326621f12c3a936e09b3a70e3
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 11:03:04 2009 -0700
The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.
commit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac
Author: Andreas Huber <andih@google.com>
Date: Thu May 14 12:39:34 2009 -0700
dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.
commit 380369f54a8027cbc9349305184d6bf527a24efe
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 17:32:00 2009 -0700
Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.
commit b5cada56b9089a23e0c461352a97dc71e08b424d
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 12:11:06 2009 -0700
Introduction of TimeSource class, clean shutdown of OMX Nodes.
commit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 17:11:56 2009 -0700
Helper classes MediaRing and MediaPlayer.
commit 9aaed8739b4bb941473da367fb88f63224d2f1b7
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 14:19:18 2009 -0700
Using mmap to map a file instead of going through FILE* improves performance, who knew?
commit ad097a78bbd002c59193ffdc39b64935928426c7
Author: Andreas Huber <andih@google.com>
Date: Mon May 11 16:42:42 2009 -0700
Added a performance test, refactored AudioDecoder a little.
commit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 16:19:29 2009 -0700
No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.
commit 858955b42c29b8033841a8caaa56c2a449810ef3
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 14:02:38 2009 -0700
Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.
commit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 13:21:45 2009 -0700
Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes
commit 3941fcf87a48dda81683df727dfb1381f62d9184
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 16:37:45 2009 -0700
some refactoring. Most streams play now.
commit d3152862840d4dd39068e5197bec8674f3d55dd5
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 15:37:32 2009 -0700
Misc. changes to support H264 decoding using the qcom hardware decoder
commit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 09:28:18 2009 -0700
Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.
commit fe6a50943f885e065d4061aa727a54417e9f36db
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 14:18:27 2009 -0700
Refactored commandline app instantiation of the decoder.
commit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 10:41:14 2009 -0700
Proper audio/video synchronization.
commit 569ee3a23f600f4b6b87c6178c0223b06e97f201
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 09:17:20 2009 -0700
Preliminary support for timestamps.
commit e4e302a89207550d8a7170d8c0afbd9c15047c84
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:13:12 2009 -0700
Another quick hack job to make CachingDataSource thread-safe as well.
commit dfb376a58bd7c09aa04e89558186fcfe13fe696c
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:08:14 2009 -0700
Quick rushjob to make FileSource and SampleTable thread safe.
commit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 17:22:04 2009 -0700
Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.
commit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 09:26:42 2009 -0700
Getting rid of old sample code to drive the OMXNode binder interface.
commit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 16:21:11 2009 -0700
Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder
commit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 15:56:19 2009 -0700
Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)
commit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 11:52:48 2009 -0700
Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.
commit 1470427866b0d3e0ce6848b4edc01c13a09be289
Author: Andreas Huber <andih@google.com>
Date: Thu Apr 30 15:19:31 2009 -0700
Another checkpoint, amr decoding now functional.
commit e612d044439f56331b6a2bc4a88622e04d4d42e7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 12:11:29 2009 -0700
string wrapper around String8, various fixes, shoutcast now works again.
commit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 11:08:18 2009 -0700
Initial check-in of OMXNode binder interface.
commit 7880d2957f74c0d7fba7679431ff5adb3780543b
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 10:05:01 2009 -0700
Initial check-in of both libgenesis2 and the genesis2 commandline tool.
2009-07-14 16:56:47 -07:00
|
|
|
|
|
|
|
AudioTrack *t;
|
|
|
|
if (mCallback != NULL) {
|
|
|
|
t = new AudioTrack(
|
2009-07-17 12:17:14 -07:00
|
|
|
mStreamType,
|
|
|
|
sampleRate,
|
|
|
|
format,
|
|
|
|
(channelCount == 2) ? AudioSystem::CHANNEL_OUT_STEREO : AudioSystem::CHANNEL_OUT_MONO,
|
|
|
|
frameCount,
|
|
|
|
0 /* flags */,
|
|
|
|
CallbackWrapper,
|
|
|
|
this);
|
Squashed commit of the following:
commit 8d179995654c19d9094e51989dc84ed0deba6e04
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 16:30:40 2009 -0700
Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.
commit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 14:06:00 2009 -0700
OMX::list_nodes API, stagefright --list now lists all available OMX components.
commit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 16:04:29 2009 -0700
Reenabled "record" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.
commit d363dd74f611577567c66d25900d6264c306468c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:59:58 2009 -0700
Make non-socket communication in IOMX the default.
commit e89fc82c4fd138c88339887baf72f1d0e67f8660
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:32:33 2009 -0700
The OMX interface now optionally supports communication through the binder only (no sockets involved)
commit 28611de11223fba65299787cdd33f7fdbd6a60a3
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 15:09:13 2009 -0700
Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}
commit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 12:21:46 2009 -0700
Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...
commit ae209a2b5d09caed5dd383c910f238926aaa8fc6
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 09:33:29 2009 -0700
Simple video decoder performance test in "stagefright" commandline tool.
commit 59fe7840111d6f46dd3c48f4950146aed962dbd2
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 16:05:12 2009 -0700
StagefrightPlayer: Properly publish video dimensions by notifying the listener.
commit 51b6598f0e47be5e12d77f1d14e111e71c593638
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 11:38:15 2009 -0700
MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.
commit 31ce53375d748da3e7d30e993ce89dae97fd65ea
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 17:23:37 2009 -0700
Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.
commit a23e312b10631a5d47f5c9831205beac6b84ab36
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 15:10:13 2009 -0700
IGenesisPlayer and friends are no more, java interface now uses local playback instead
of playing inside the media server process.
commit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 13:17:03 2009 -0700
MP3 extractor now supports seeking (only fixed bitrate files currently supported)
commit 96a790405763bfa738d1c6845c99a9fdf579b66f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 7 10:53:54 2009 -0700
Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.
commit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 16:40:02 2009 -0700
Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.
commit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 12:18:29 2009 -0700
Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.
commit 88bffc5ed4033a607080f8777a1c0ec9e3e079de
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 2 12:25:03 2009 -0700
MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.
commit 732aa0a87c7e8d8a10776b275712649954962414
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:58:56 2009 -0700
Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.
commit 669e5944b2fe0542a3b8dba0c441a94503e99fb0
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:43:02 2009 -0700
Proper support for end-of-stream signalling of MediaSources.
commit afb038f2dc594c742e554b2d42b86ffc7434e3fc
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 30 16:48:03 2009 -0700
Support for the "sniffing" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.
commit ed3644b8bd56807e1db4b32433a93a2467f1f3c5
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 13:27:52 2009 -0700
I don't think prepare should automatically start the player.
commit 11eb9b49dc4a0819d366682817cba68613f4fe12
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 11:09:22 2009 -0700
Somewhat better timing information implemented in the MP3Extractor.
commit cab023a1751735c0ed26c8493498a91d8644c6c9
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 25 15:41:56 2009 -0700
Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.
commit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:41:12 2009 -0700
Make sure we only allocate surface buffers if there is video to be played.
commit 7f85e7d92fe81740e102e09905b19354f4ac178e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:19:32 2009 -0700
Clean up a failed merge and implement stub for new API in MediaPlayerBase.
commit f0e9d494a4c03402ea7b54891848ca5a50c421b2
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 15:38:03 2009 -0700
Support yuv420->rgb565 conversion if hardware color conversion is unavailable.
commit 87223248b3099cd5261b94169f84cfd1eba56a8f
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 09:35:56 2009 -0700
Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.
commit e07e651f0325892b797f3eb64dbeca0f317afdfd
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 16:26:42 2009 -0700
Enable assertions in HTTPDataSource.
commit 0dc97adebea1721156880f4b3d5c70f8d50c53b2
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:39 2009 -0700
delete foo.
commit 7f05845dda496e7defee284d32509d127e785784
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:08 2009 -0700
added foo.
commit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 11:44:31 2009 -0700
Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.
commit d6286a6bbca639952491448fa3e609b775a8a814
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 17:11:49 2009 -0700
send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now "works" on the emulator, too.
commit 8d657e004677a7c5dae4479e8519bcaa94c18aad
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 11:58:55 2009 -0700
Instead of erasing codec specific data once it's been output to the omx node, retain the data and just rewind after a stop.
commit 279fede6ba35cbc37c35616c53406bf2c9720202
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 10:58:11 2009 -0700
Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.
commit 0f717f15a6328efd3f34082929cd8ad2351095a9
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 08:44:12 2009 -0700
Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer's notion of time mapping.
commit 0cfb63e33270daf9b215214608ab383f93a31823
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 14:25:48 2009 -0700
Massive rename.
commit 30ed8f476c4431a5275538958b3e281bd17d5eab
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 13:52:41 2009 -0700
send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.
commit b832d04011b2dd8a9632eb7e575bfe1addd1270d
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:21:17 2009 -0700
MediaBuffers can now be "clone()", they sit on top of the same data but have their own range and metadata. Once a clone's refcount drops to 0 it decrements the refcount on the original buffer.
commit 4e944672808bdf1ed40a69f3f602f93ebf7b4049
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:01:01 2009 -0700
Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.
commit ddb7529b4de4828db51432bd405fddd76cfa3b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 16:30:25 2009 -0700
More fudging with A/V sync...
commit 1e5a4d8df08237b58c06c6527a33152ae931addf
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 11:54:20 2009 -0700
API cleanup of MediaSource. Got rid of MediaRing as it really doesn't serve a purpose if OMX decoders are used.
commit 0953c65232aa9753d17d2e25c5f5526eb810cf13
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 16:59:19 2009 -0700
Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.
commit 2085b8ea9484a21fa11f94194a27405d413aeecc
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 10:17:01 2009 -0700
Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.
commit 471f143458a8a0d93cb1bf9568c63c3967279dc6
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 17:32:27 2009 -0700
Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.
commit 4010d371dbe62ce4971e13437776cba32cb0bb3d
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 16:01:07 2009 -0700
Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.
commit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 15:33:58 2009 -0700
Change the TimeSource interface's APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.
commit 08bb46fa61d12e852a424698ddb0c90700328f6e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 11:57:24 2009 -0700
Using framework's Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.
commit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 17:12:03 2009 -0700
MediaSources now publish their format.
commit 7e429a26c57bf936e1a08035d2d11839f9f00310
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 16:38:29 2009 -0700
MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.
commit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 14:39:55 2009 -0700
Sync sample seek support.
commit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 13:51:11 2009 -0700
Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn't. Fixes a problem with seek.
commit e57781d3b2c985a74cd8b60e7c8f2d576459d038
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 10:52:20 2009 -0700
First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.
commit 0551cd78fda78bf66877fb26c5a55e5ae23d8367
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 16:23:38 2009 -0700
Preliminary support for camera input.
commit f8ebafa65d10d5a06944de6b2e2992a33121b857
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 12:13:47 2009 -0700
Allow NativeMediaPlayer access to Surface's getISurface() method.
commit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:38:25 2009 -0700
Header files are now in their own genesis2 hierarchy below frameworks/base/include.
commit f49b8b234b8f6ce83148787eef540dd920f04aa6
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:22:03 2009 -0700
moved MPEG4Writer into libgenesis2.
commit 5224254919dac4728677335ea60429fa16f518b4
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:13:38 2009 -0700
Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.
commit f9a9d84f7e0465ef5d1938a068655ba39527cf99
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 16:43:11 2009 -0700
Support for getPosition() and getDuration().
commit 3206cc5140bcbc88be039f8d94b954af63e69752
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 15:37:45 2009 -0700
Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()
commit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 13:49:50 2009 -0700
Proper disconnection from the OMX service.
commit cdcf47a2c31599109ee42277c7fa14af3c600091
Author: Andreas Huber <andih@google.com>
Date: Tue May 26 17:27:06 2009 -0700
New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.
commit 0586af20ac9ae0403dd190bafd290b0f90549723
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 15:53:19 2009 -0700
Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.
commit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 13:35:30 2009 -0700
Support for http URIs in MediaPlayer, compensate for AudioTrack latency.
commit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 11:33:25 2009 -0700
Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don't shutdown cleanly within a second.
commit 1f0268f4f14ad5215668f34e06a420850174d665
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:33:16 2009 -0700
and foo.txt is gone again.
commit 0feca4e0919f345704d78ec78894bac5027bd5ed
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:28:49 2009 -0700
added foo.txt
commit 9c7d04b35cdc895a2de3602dc46522f608bd205f
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:28:04 2009 -0700
delete foo again
commit fec3ca1720992cce51b9a92b86b945da88a6b16c
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:27:45 2009 -0700
weird
commit 30a6571302333146e537e537a3a8986245cca87c
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:18:55 2009 -0700
reverse test
commit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:18:22 2009 -0700
test
commit a9eeafec6e46072cac41e54ebdbd153cb7ae7518
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 16:37:50 2009 -0700
Use the video ring again for now.
commit e05ff3d3c1c4f89ef499a2b172138a775fd694e3
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 15:42:19 2009 -0700
Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.
commit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 09:56:11 2009 -0700
Fix the build, all binder-related headers have moved and there's a new library libbinde
r to link against now.
commit 23e0a24404d16c898c2c6b3c7495ad303844bc71
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 08:42:04 2009 -0700
Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss & friends) not currently working.
commit 9cd77adb1ac194197364ffad00a0d7215f458e1a
Author: Andreas Huber <andih@google.com>
Date: Wed May 20 12:31:45 2009 -0700
New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.
commit 5c510fb55ffed7ec25305999ed9b6c1eec48d503
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 15:40:06 2009 -0700
Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.
commit f6c7a2040b8eb43326621f12c3a936e09b3a70e3
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 11:03:04 2009 -0700
The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.
commit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac
Author: Andreas Huber <andih@google.com>
Date: Thu May 14 12:39:34 2009 -0700
dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.
commit 380369f54a8027cbc9349305184d6bf527a24efe
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 17:32:00 2009 -0700
Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.
commit b5cada56b9089a23e0c461352a97dc71e08b424d
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 12:11:06 2009 -0700
Introduction of TimeSource class, clean shutdown of OMX Nodes.
commit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 17:11:56 2009 -0700
Helper classes MediaRing and MediaPlayer.
commit 9aaed8739b4bb941473da367fb88f63224d2f1b7
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 14:19:18 2009 -0700
Using mmap to map a file instead of going through FILE* improves performance, who knew?
commit ad097a78bbd002c59193ffdc39b64935928426c7
Author: Andreas Huber <andih@google.com>
Date: Mon May 11 16:42:42 2009 -0700
Added a performance test, refactored AudioDecoder a little.
commit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 16:19:29 2009 -0700
No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.
commit 858955b42c29b8033841a8caaa56c2a449810ef3
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 14:02:38 2009 -0700
Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.
commit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 13:21:45 2009 -0700
Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes
commit 3941fcf87a48dda81683df727dfb1381f62d9184
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 16:37:45 2009 -0700
some refactoring. Most streams play now.
commit d3152862840d4dd39068e5197bec8674f3d55dd5
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 15:37:32 2009 -0700
Misc. changes to support H264 decoding using the qcom hardware decoder
commit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 09:28:18 2009 -0700
Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.
commit fe6a50943f885e065d4061aa727a54417e9f36db
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 14:18:27 2009 -0700
Refactored commandline app instantiation of the decoder.
commit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 10:41:14 2009 -0700
Proper audio/video synchronization.
commit 569ee3a23f600f4b6b87c6178c0223b06e97f201
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 09:17:20 2009 -0700
Preliminary support for timestamps.
commit e4e302a89207550d8a7170d8c0afbd9c15047c84
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:13:12 2009 -0700
Another quick hack job to make CachingDataSource thread-safe as well.
commit dfb376a58bd7c09aa04e89558186fcfe13fe696c
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:08:14 2009 -0700
Quick rushjob to make FileSource and SampleTable thread safe.
commit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 17:22:04 2009 -0700
Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.
commit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 09:26:42 2009 -0700
Getting rid of old sample code to drive the OMXNode binder interface.
commit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 16:21:11 2009 -0700
Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder
commit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 15:56:19 2009 -0700
Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)
commit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 11:52:48 2009 -0700
Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.
commit 1470427866b0d3e0ce6848b4edc01c13a09be289
Author: Andreas Huber <andih@google.com>
Date: Thu Apr 30 15:19:31 2009 -0700
Another checkpoint, amr decoding now functional.
commit e612d044439f56331b6a2bc4a88622e04d4d42e7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 12:11:29 2009 -0700
string wrapper around String8, various fixes, shoutcast now works again.
commit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 11:08:18 2009 -0700
Initial check-in of OMXNode binder interface.
commit 7880d2957f74c0d7fba7679431ff5adb3780543b
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 10:05:01 2009 -0700
Initial check-in of both libgenesis2 and the genesis2 commandline tool.
2009-07-14 16:56:47 -07:00
|
|
|
} else {
|
|
|
|
t = new AudioTrack(
|
2009-07-17 12:17:14 -07:00
|
|
|
mStreamType,
|
|
|
|
sampleRate,
|
|
|
|
format,
|
|
|
|
(channelCount == 2) ? AudioSystem::CHANNEL_OUT_STEREO : AudioSystem::CHANNEL_OUT_MONO,
|
|
|
|
frameCount);
|
Squashed commit of the following:
commit 8d179995654c19d9094e51989dc84ed0deba6e04
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 16:30:40 2009 -0700
Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.
commit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 14:06:00 2009 -0700
OMX::list_nodes API, stagefright --list now lists all available OMX components.
commit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 16:04:29 2009 -0700
Reenabled "record" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.
commit d363dd74f611577567c66d25900d6264c306468c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:59:58 2009 -0700
Make non-socket communication in IOMX the default.
commit e89fc82c4fd138c88339887baf72f1d0e67f8660
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:32:33 2009 -0700
The OMX interface now optionally supports communication through the binder only (no sockets involved)
commit 28611de11223fba65299787cdd33f7fdbd6a60a3
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 15:09:13 2009 -0700
Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}
commit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 12:21:46 2009 -0700
Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...
commit ae209a2b5d09caed5dd383c910f238926aaa8fc6
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 09:33:29 2009 -0700
Simple video decoder performance test in "stagefright" commandline tool.
commit 59fe7840111d6f46dd3c48f4950146aed962dbd2
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 16:05:12 2009 -0700
StagefrightPlayer: Properly publish video dimensions by notifying the listener.
commit 51b6598f0e47be5e12d77f1d14e111e71c593638
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 11:38:15 2009 -0700
MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.
commit 31ce53375d748da3e7d30e993ce89dae97fd65ea
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 17:23:37 2009 -0700
Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.
commit a23e312b10631a5d47f5c9831205beac6b84ab36
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 15:10:13 2009 -0700
IGenesisPlayer and friends are no more, java interface now uses local playback instead
of playing inside the media server process.
commit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 13:17:03 2009 -0700
MP3 extractor now supports seeking (only fixed bitrate files currently supported)
commit 96a790405763bfa738d1c6845c99a9fdf579b66f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 7 10:53:54 2009 -0700
Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.
commit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 16:40:02 2009 -0700
Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.
commit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 12:18:29 2009 -0700
Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.
commit 88bffc5ed4033a607080f8777a1c0ec9e3e079de
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 2 12:25:03 2009 -0700
MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.
commit 732aa0a87c7e8d8a10776b275712649954962414
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:58:56 2009 -0700
Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.
commit 669e5944b2fe0542a3b8dba0c441a94503e99fb0
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:43:02 2009 -0700
Proper support for end-of-stream signalling of MediaSources.
commit afb038f2dc594c742e554b2d42b86ffc7434e3fc
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 30 16:48:03 2009 -0700
Support for the "sniffing" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.
commit ed3644b8bd56807e1db4b32433a93a2467f1f3c5
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 13:27:52 2009 -0700
I don't think prepare should automatically start the player.
commit 11eb9b49dc4a0819d366682817cba68613f4fe12
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 11:09:22 2009 -0700
Somewhat better timing information implemented in the MP3Extractor.
commit cab023a1751735c0ed26c8493498a91d8644c6c9
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 25 15:41:56 2009 -0700
Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.
commit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:41:12 2009 -0700
Make sure we only allocate surface buffers if there is video to be played.
commit 7f85e7d92fe81740e102e09905b19354f4ac178e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:19:32 2009 -0700
Clean up a failed merge and implement stub for new API in MediaPlayerBase.
commit f0e9d494a4c03402ea7b54891848ca5a50c421b2
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 15:38:03 2009 -0700
Support yuv420->rgb565 conversion if hardware color conversion is unavailable.
commit 87223248b3099cd5261b94169f84cfd1eba56a8f
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 09:35:56 2009 -0700
Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.
commit e07e651f0325892b797f3eb64dbeca0f317afdfd
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 16:26:42 2009 -0700
Enable assertions in HTTPDataSource.
commit 0dc97adebea1721156880f4b3d5c70f8d50c53b2
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:39 2009 -0700
delete foo.
commit 7f05845dda496e7defee284d32509d127e785784
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:08 2009 -0700
added foo.
commit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 11:44:31 2009 -0700
Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.
commit d6286a6bbca639952491448fa3e609b775a8a814
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 17:11:49 2009 -0700
send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now "works" on the emulator, too.
commit 8d657e004677a7c5dae4479e8519bcaa94c18aad
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 11:58:55 2009 -0700
Instead of erasing codec specific data once it's been output to the omx node, retain the data and just rewind after a stop.
commit 279fede6ba35cbc37c35616c53406bf2c9720202
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 10:58:11 2009 -0700
Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.
commit 0f717f15a6328efd3f34082929cd8ad2351095a9
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 08:44:12 2009 -0700
Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer's notion of time mapping.
commit 0cfb63e33270daf9b215214608ab383f93a31823
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 14:25:48 2009 -0700
Massive rename.
commit 30ed8f476c4431a5275538958b3e281bd17d5eab
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 13:52:41 2009 -0700
send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.
commit b832d04011b2dd8a9632eb7e575bfe1addd1270d
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:21:17 2009 -0700
MediaBuffers can now be "clone()", they sit on top of the same data but have their own range and metadata. Once a clone's refcount drops to 0 it decrements the refcount on the original buffer.
commit 4e944672808bdf1ed40a69f3f602f93ebf7b4049
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:01:01 2009 -0700
Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.
commit ddb7529b4de4828db51432bd405fddd76cfa3b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 16:30:25 2009 -0700
More fudging with A/V sync...
commit 1e5a4d8df08237b58c06c6527a33152ae931addf
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 11:54:20 2009 -0700
API cleanup of MediaSource. Got rid of MediaRing as it really doesn't serve a purpose if OMX decoders are used.
commit 0953c65232aa9753d17d2e25c5f5526eb810cf13
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 16:59:19 2009 -0700
Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.
commit 2085b8ea9484a21fa11f94194a27405d413aeecc
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 10:17:01 2009 -0700
Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.
commit 471f143458a8a0d93cb1bf9568c63c3967279dc6
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 17:32:27 2009 -0700
Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.
commit 4010d371dbe62ce4971e13437776cba32cb0bb3d
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 16:01:07 2009 -0700
Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.
commit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 15:33:58 2009 -0700
Change the TimeSource interface's APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.
commit 08bb46fa61d12e852a424698ddb0c90700328f6e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 11:57:24 2009 -0700
Using framework's Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.
commit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 17:12:03 2009 -0700
MediaSources now publish their format.
commit 7e429a26c57bf936e1a08035d2d11839f9f00310
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 16:38:29 2009 -0700
MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.
commit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 14:39:55 2009 -0700
Sync sample seek support.
commit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 13:51:11 2009 -0700
Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn't. Fixes a problem with seek.
commit e57781d3b2c985a74cd8b60e7c8f2d576459d038
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 10:52:20 2009 -0700
First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.
commit 0551cd78fda78bf66877fb26c5a55e5ae23d8367
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 16:23:38 2009 -0700
Preliminary support for camera input.
commit f8ebafa65d10d5a06944de6b2e2992a33121b857
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 12:13:47 2009 -0700
Allow NativeMediaPlayer access to Surface's getISurface() method.
commit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:38:25 2009 -0700
Header files are now in their own genesis2 hierarchy below frameworks/base/include.
commit f49b8b234b8f6ce83148787eef540dd920f04aa6
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:22:03 2009 -0700
moved MPEG4Writer into libgenesis2.
commit 5224254919dac4728677335ea60429fa16f518b4
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:13:38 2009 -0700
Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.
commit f9a9d84f7e0465ef5d1938a068655ba39527cf99
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 16:43:11 2009 -0700
Support for getPosition() and getDuration().
commit 3206cc5140bcbc88be039f8d94b954af63e69752
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 15:37:45 2009 -0700
Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()
commit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 13:49:50 2009 -0700
Proper disconnection from the OMX service.
commit cdcf47a2c31599109ee42277c7fa14af3c600091
Author: Andreas Huber <andih@google.com>
Date: Tue May 26 17:27:06 2009 -0700
New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.
commit 0586af20ac9ae0403dd190bafd290b0f90549723
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 15:53:19 2009 -0700
Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.
commit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 13:35:30 2009 -0700
Support for http URIs in MediaPlayer, compensate for AudioTrack latency.
commit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 11:33:25 2009 -0700
Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don't shutdown cleanly within a second.
commit 1f0268f4f14ad5215668f34e06a420850174d665
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:33:16 2009 -0700
and foo.txt is gone again.
commit 0feca4e0919f345704d78ec78894bac5027bd5ed
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:28:49 2009 -0700
added foo.txt
commit 9c7d04b35cdc895a2de3602dc46522f608bd205f
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:28:04 2009 -0700
delete foo again
commit fec3ca1720992cce51b9a92b86b945da88a6b16c
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:27:45 2009 -0700
weird
commit 30a6571302333146e537e537a3a8986245cca87c
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:18:55 2009 -0700
reverse test
commit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:18:22 2009 -0700
test
commit a9eeafec6e46072cac41e54ebdbd153cb7ae7518
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 16:37:50 2009 -0700
Use the video ring again for now.
commit e05ff3d3c1c4f89ef499a2b172138a775fd694e3
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 15:42:19 2009 -0700
Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.
commit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 09:56:11 2009 -0700
Fix the build, all binder-related headers have moved and there's a new library libbinde
r to link against now.
commit 23e0a24404d16c898c2c6b3c7495ad303844bc71
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 08:42:04 2009 -0700
Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss & friends) not currently working.
commit 9cd77adb1ac194197364ffad00a0d7215f458e1a
Author: Andreas Huber <andih@google.com>
Date: Wed May 20 12:31:45 2009 -0700
New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.
commit 5c510fb55ffed7ec25305999ed9b6c1eec48d503
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 15:40:06 2009 -0700
Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.
commit f6c7a2040b8eb43326621f12c3a936e09b3a70e3
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 11:03:04 2009 -0700
The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.
commit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac
Author: Andreas Huber <andih@google.com>
Date: Thu May 14 12:39:34 2009 -0700
dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.
commit 380369f54a8027cbc9349305184d6bf527a24efe
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 17:32:00 2009 -0700
Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.
commit b5cada56b9089a23e0c461352a97dc71e08b424d
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 12:11:06 2009 -0700
Introduction of TimeSource class, clean shutdown of OMX Nodes.
commit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 17:11:56 2009 -0700
Helper classes MediaRing and MediaPlayer.
commit 9aaed8739b4bb941473da367fb88f63224d2f1b7
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 14:19:18 2009 -0700
Using mmap to map a file instead of going through FILE* improves performance, who knew?
commit ad097a78bbd002c59193ffdc39b64935928426c7
Author: Andreas Huber <andih@google.com>
Date: Mon May 11 16:42:42 2009 -0700
Added a performance test, refactored AudioDecoder a little.
commit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 16:19:29 2009 -0700
No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.
commit 858955b42c29b8033841a8caaa56c2a449810ef3
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 14:02:38 2009 -0700
Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.
commit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 13:21:45 2009 -0700
Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes
commit 3941fcf87a48dda81683df727dfb1381f62d9184
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 16:37:45 2009 -0700
some refactoring. Most streams play now.
commit d3152862840d4dd39068e5197bec8674f3d55dd5
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 15:37:32 2009 -0700
Misc. changes to support H264 decoding using the qcom hardware decoder
commit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 09:28:18 2009 -0700
Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.
commit fe6a50943f885e065d4061aa727a54417e9f36db
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 14:18:27 2009 -0700
Refactored commandline app instantiation of the decoder.
commit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 10:41:14 2009 -0700
Proper audio/video synchronization.
commit 569ee3a23f600f4b6b87c6178c0223b06e97f201
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 09:17:20 2009 -0700
Preliminary support for timestamps.
commit e4e302a89207550d8a7170d8c0afbd9c15047c84
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:13:12 2009 -0700
Another quick hack job to make CachingDataSource thread-safe as well.
commit dfb376a58bd7c09aa04e89558186fcfe13fe696c
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:08:14 2009 -0700
Quick rushjob to make FileSource and SampleTable thread safe.
commit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 17:22:04 2009 -0700
Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.
commit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 09:26:42 2009 -0700
Getting rid of old sample code to drive the OMXNode binder interface.
commit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 16:21:11 2009 -0700
Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder
commit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 15:56:19 2009 -0700
Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)
commit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 11:52:48 2009 -0700
Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.
commit 1470427866b0d3e0ce6848b4edc01c13a09be289
Author: Andreas Huber <andih@google.com>
Date: Thu Apr 30 15:19:31 2009 -0700
Another checkpoint, amr decoding now functional.
commit e612d044439f56331b6a2bc4a88622e04d4d42e7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 12:11:29 2009 -0700
string wrapper around String8, various fixes, shoutcast now works again.
commit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 11:08:18 2009 -0700
Initial check-in of OMXNode binder interface.
commit 7880d2957f74c0d7fba7679431ff5adb3780543b
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 10:05:01 2009 -0700
Initial check-in of both libgenesis2 and the genesis2 commandline tool.
2009-07-14 16:56:47 -07:00
|
|
|
}
|
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
if ((t == 0) || (t->initCheck() != NO_ERROR)) {
|
|
|
|
LOGE("Unable to create audio track");
|
|
|
|
delete t;
|
|
|
|
return NO_INIT;
|
|
|
|
}
|
|
|
|
|
|
|
|
LOGV("setVolume");
|
|
|
|
t->setVolume(mLeftVolume, mRightVolume);
|
|
|
|
mMsecsPerFrame = 1.e3 / (float) sampleRate;
|
|
|
|
mLatency = t->latency() + kAudioVideoDelayMs;
|
|
|
|
mTrack = t;
|
|
|
|
return NO_ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
void MediaPlayerService::AudioOutput::start()
|
|
|
|
{
|
|
|
|
LOGV("start");
|
|
|
|
if (mTrack) {
|
|
|
|
mTrack->setVolume(mLeftVolume, mRightVolume);
|
|
|
|
mTrack->start();
|
2009-09-20 10:42:13 -07:00
|
|
|
mTrack->getPosition(&mNumFramesWritten);
|
2009-03-03 19:31:44 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
ssize_t MediaPlayerService::AudioOutput::write(const void* buffer, size_t size)
|
|
|
|
{
|
Squashed commit of the following:
commit 8d179995654c19d9094e51989dc84ed0deba6e04
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 16:30:40 2009 -0700
Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.
commit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 14:06:00 2009 -0700
OMX::list_nodes API, stagefright --list now lists all available OMX components.
commit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 16:04:29 2009 -0700
Reenabled "record" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.
commit d363dd74f611577567c66d25900d6264c306468c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:59:58 2009 -0700
Make non-socket communication in IOMX the default.
commit e89fc82c4fd138c88339887baf72f1d0e67f8660
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:32:33 2009 -0700
The OMX interface now optionally supports communication through the binder only (no sockets involved)
commit 28611de11223fba65299787cdd33f7fdbd6a60a3
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 15:09:13 2009 -0700
Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}
commit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 12:21:46 2009 -0700
Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...
commit ae209a2b5d09caed5dd383c910f238926aaa8fc6
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 09:33:29 2009 -0700
Simple video decoder performance test in "stagefright" commandline tool.
commit 59fe7840111d6f46dd3c48f4950146aed962dbd2
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 16:05:12 2009 -0700
StagefrightPlayer: Properly publish video dimensions by notifying the listener.
commit 51b6598f0e47be5e12d77f1d14e111e71c593638
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 11:38:15 2009 -0700
MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.
commit 31ce53375d748da3e7d30e993ce89dae97fd65ea
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 17:23:37 2009 -0700
Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.
commit a23e312b10631a5d47f5c9831205beac6b84ab36
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 15:10:13 2009 -0700
IGenesisPlayer and friends are no more, java interface now uses local playback instead
of playing inside the media server process.
commit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 13:17:03 2009 -0700
MP3 extractor now supports seeking (only fixed bitrate files currently supported)
commit 96a790405763bfa738d1c6845c99a9fdf579b66f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 7 10:53:54 2009 -0700
Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.
commit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 16:40:02 2009 -0700
Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.
commit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 12:18:29 2009 -0700
Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.
commit 88bffc5ed4033a607080f8777a1c0ec9e3e079de
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 2 12:25:03 2009 -0700
MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.
commit 732aa0a87c7e8d8a10776b275712649954962414
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:58:56 2009 -0700
Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.
commit 669e5944b2fe0542a3b8dba0c441a94503e99fb0
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:43:02 2009 -0700
Proper support for end-of-stream signalling of MediaSources.
commit afb038f2dc594c742e554b2d42b86ffc7434e3fc
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 30 16:48:03 2009 -0700
Support for the "sniffing" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.
commit ed3644b8bd56807e1db4b32433a93a2467f1f3c5
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 13:27:52 2009 -0700
I don't think prepare should automatically start the player.
commit 11eb9b49dc4a0819d366682817cba68613f4fe12
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 11:09:22 2009 -0700
Somewhat better timing information implemented in the MP3Extractor.
commit cab023a1751735c0ed26c8493498a91d8644c6c9
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 25 15:41:56 2009 -0700
Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.
commit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:41:12 2009 -0700
Make sure we only allocate surface buffers if there is video to be played.
commit 7f85e7d92fe81740e102e09905b19354f4ac178e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:19:32 2009 -0700
Clean up a failed merge and implement stub for new API in MediaPlayerBase.
commit f0e9d494a4c03402ea7b54891848ca5a50c421b2
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 15:38:03 2009 -0700
Support yuv420->rgb565 conversion if hardware color conversion is unavailable.
commit 87223248b3099cd5261b94169f84cfd1eba56a8f
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 09:35:56 2009 -0700
Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.
commit e07e651f0325892b797f3eb64dbeca0f317afdfd
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 16:26:42 2009 -0700
Enable assertions in HTTPDataSource.
commit 0dc97adebea1721156880f4b3d5c70f8d50c53b2
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:39 2009 -0700
delete foo.
commit 7f05845dda496e7defee284d32509d127e785784
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:08 2009 -0700
added foo.
commit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 11:44:31 2009 -0700
Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.
commit d6286a6bbca639952491448fa3e609b775a8a814
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 17:11:49 2009 -0700
send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now "works" on the emulator, too.
commit 8d657e004677a7c5dae4479e8519bcaa94c18aad
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 11:58:55 2009 -0700
Instead of erasing codec specific data once it's been output to the omx node, retain the data and just rewind after a stop.
commit 279fede6ba35cbc37c35616c53406bf2c9720202
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 10:58:11 2009 -0700
Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.
commit 0f717f15a6328efd3f34082929cd8ad2351095a9
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 08:44:12 2009 -0700
Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer's notion of time mapping.
commit 0cfb63e33270daf9b215214608ab383f93a31823
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 14:25:48 2009 -0700
Massive rename.
commit 30ed8f476c4431a5275538958b3e281bd17d5eab
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 13:52:41 2009 -0700
send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.
commit b832d04011b2dd8a9632eb7e575bfe1addd1270d
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:21:17 2009 -0700
MediaBuffers can now be "clone()", they sit on top of the same data but have their own range and metadata. Once a clone's refcount drops to 0 it decrements the refcount on the original buffer.
commit 4e944672808bdf1ed40a69f3f602f93ebf7b4049
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:01:01 2009 -0700
Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.
commit ddb7529b4de4828db51432bd405fddd76cfa3b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 16:30:25 2009 -0700
More fudging with A/V sync...
commit 1e5a4d8df08237b58c06c6527a33152ae931addf
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 11:54:20 2009 -0700
API cleanup of MediaSource. Got rid of MediaRing as it really doesn't serve a purpose if OMX decoders are used.
commit 0953c65232aa9753d17d2e25c5f5526eb810cf13
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 16:59:19 2009 -0700
Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.
commit 2085b8ea9484a21fa11f94194a27405d413aeecc
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 10:17:01 2009 -0700
Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.
commit 471f143458a8a0d93cb1bf9568c63c3967279dc6
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 17:32:27 2009 -0700
Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.
commit 4010d371dbe62ce4971e13437776cba32cb0bb3d
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 16:01:07 2009 -0700
Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.
commit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 15:33:58 2009 -0700
Change the TimeSource interface's APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.
commit 08bb46fa61d12e852a424698ddb0c90700328f6e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 11:57:24 2009 -0700
Using framework's Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.
commit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 17:12:03 2009 -0700
MediaSources now publish their format.
commit 7e429a26c57bf936e1a08035d2d11839f9f00310
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 16:38:29 2009 -0700
MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.
commit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 14:39:55 2009 -0700
Sync sample seek support.
commit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 13:51:11 2009 -0700
Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn't. Fixes a problem with seek.
commit e57781d3b2c985a74cd8b60e7c8f2d576459d038
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 10:52:20 2009 -0700
First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.
commit 0551cd78fda78bf66877fb26c5a55e5ae23d8367
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 16:23:38 2009 -0700
Preliminary support for camera input.
commit f8ebafa65d10d5a06944de6b2e2992a33121b857
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 12:13:47 2009 -0700
Allow NativeMediaPlayer access to Surface's getISurface() method.
commit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:38:25 2009 -0700
Header files are now in their own genesis2 hierarchy below frameworks/base/include.
commit f49b8b234b8f6ce83148787eef540dd920f04aa6
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:22:03 2009 -0700
moved MPEG4Writer into libgenesis2.
commit 5224254919dac4728677335ea60429fa16f518b4
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:13:38 2009 -0700
Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.
commit f9a9d84f7e0465ef5d1938a068655ba39527cf99
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 16:43:11 2009 -0700
Support for getPosition() and getDuration().
commit 3206cc5140bcbc88be039f8d94b954af63e69752
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 15:37:45 2009 -0700
Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()
commit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 13:49:50 2009 -0700
Proper disconnection from the OMX service.
commit cdcf47a2c31599109ee42277c7fa14af3c600091
Author: Andreas Huber <andih@google.com>
Date: Tue May 26 17:27:06 2009 -0700
New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.
commit 0586af20ac9ae0403dd190bafd290b0f90549723
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 15:53:19 2009 -0700
Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.
commit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 13:35:30 2009 -0700
Support for http URIs in MediaPlayer, compensate for AudioTrack latency.
commit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 11:33:25 2009 -0700
Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don't shutdown cleanly within a second.
commit 1f0268f4f14ad5215668f34e06a420850174d665
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:33:16 2009 -0700
and foo.txt is gone again.
commit 0feca4e0919f345704d78ec78894bac5027bd5ed
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:28:49 2009 -0700
added foo.txt
commit 9c7d04b35cdc895a2de3602dc46522f608bd205f
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:28:04 2009 -0700
delete foo again
commit fec3ca1720992cce51b9a92b86b945da88a6b16c
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:27:45 2009 -0700
weird
commit 30a6571302333146e537e537a3a8986245cca87c
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:18:55 2009 -0700
reverse test
commit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:18:22 2009 -0700
test
commit a9eeafec6e46072cac41e54ebdbd153cb7ae7518
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 16:37:50 2009 -0700
Use the video ring again for now.
commit e05ff3d3c1c4f89ef499a2b172138a775fd694e3
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 15:42:19 2009 -0700
Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.
commit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 09:56:11 2009 -0700
Fix the build, all binder-related headers have moved and there's a new library libbinde
r to link against now.
commit 23e0a24404d16c898c2c6b3c7495ad303844bc71
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 08:42:04 2009 -0700
Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss & friends) not currently working.
commit 9cd77adb1ac194197364ffad00a0d7215f458e1a
Author: Andreas Huber <andih@google.com>
Date: Wed May 20 12:31:45 2009 -0700
New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.
commit 5c510fb55ffed7ec25305999ed9b6c1eec48d503
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 15:40:06 2009 -0700
Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.
commit f6c7a2040b8eb43326621f12c3a936e09b3a70e3
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 11:03:04 2009 -0700
The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.
commit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac
Author: Andreas Huber <andih@google.com>
Date: Thu May 14 12:39:34 2009 -0700
dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.
commit 380369f54a8027cbc9349305184d6bf527a24efe
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 17:32:00 2009 -0700
Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.
commit b5cada56b9089a23e0c461352a97dc71e08b424d
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 12:11:06 2009 -0700
Introduction of TimeSource class, clean shutdown of OMX Nodes.
commit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 17:11:56 2009 -0700
Helper classes MediaRing and MediaPlayer.
commit 9aaed8739b4bb941473da367fb88f63224d2f1b7
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 14:19:18 2009 -0700
Using mmap to map a file instead of going through FILE* improves performance, who knew?
commit ad097a78bbd002c59193ffdc39b64935928426c7
Author: Andreas Huber <andih@google.com>
Date: Mon May 11 16:42:42 2009 -0700
Added a performance test, refactored AudioDecoder a little.
commit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 16:19:29 2009 -0700
No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.
commit 858955b42c29b8033841a8caaa56c2a449810ef3
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 14:02:38 2009 -0700
Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.
commit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 13:21:45 2009 -0700
Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes
commit 3941fcf87a48dda81683df727dfb1381f62d9184
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 16:37:45 2009 -0700
some refactoring. Most streams play now.
commit d3152862840d4dd39068e5197bec8674f3d55dd5
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 15:37:32 2009 -0700
Misc. changes to support H264 decoding using the qcom hardware decoder
commit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 09:28:18 2009 -0700
Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.
commit fe6a50943f885e065d4061aa727a54417e9f36db
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 14:18:27 2009 -0700
Refactored commandline app instantiation of the decoder.
commit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 10:41:14 2009 -0700
Proper audio/video synchronization.
commit 569ee3a23f600f4b6b87c6178c0223b06e97f201
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 09:17:20 2009 -0700
Preliminary support for timestamps.
commit e4e302a89207550d8a7170d8c0afbd9c15047c84
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:13:12 2009 -0700
Another quick hack job to make CachingDataSource thread-safe as well.
commit dfb376a58bd7c09aa04e89558186fcfe13fe696c
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:08:14 2009 -0700
Quick rushjob to make FileSource and SampleTable thread safe.
commit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 17:22:04 2009 -0700
Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.
commit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 09:26:42 2009 -0700
Getting rid of old sample code to drive the OMXNode binder interface.
commit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 16:21:11 2009 -0700
Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder
commit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 15:56:19 2009 -0700
Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)
commit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 11:52:48 2009 -0700
Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.
commit 1470427866b0d3e0ce6848b4edc01c13a09be289
Author: Andreas Huber <andih@google.com>
Date: Thu Apr 30 15:19:31 2009 -0700
Another checkpoint, amr decoding now functional.
commit e612d044439f56331b6a2bc4a88622e04d4d42e7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 12:11:29 2009 -0700
string wrapper around String8, various fixes, shoutcast now works again.
commit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 11:08:18 2009 -0700
Initial check-in of OMXNode binder interface.
commit 7880d2957f74c0d7fba7679431ff5adb3780543b
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 10:05:01 2009 -0700
Initial check-in of both libgenesis2 and the genesis2 commandline tool.
2009-07-14 16:56:47 -07:00
|
|
|
LOG_FATAL_IF(mCallback != NULL, "Don't call write if supplying a callback.");
|
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
//LOGV("write(%p, %u)", buffer, size);
|
2009-09-20 10:42:13 -07:00
|
|
|
if (mTrack) {
|
|
|
|
// Only make visualization buffers if anyone recently requested visualization data
|
|
|
|
uint64_t now = uptimeMillis();
|
|
|
|
if (lastReadTime + TOTALBUFTIMEMSEC >= now) {
|
|
|
|
// Based on the current play counter, the number of frames written and
|
|
|
|
// the current real time we can calculate the approximate real start
|
|
|
|
// time of the buffer we're about to write.
|
|
|
|
uint32_t pos;
|
|
|
|
mTrack->getPosition(&pos);
|
|
|
|
|
|
|
|
// we're writing ahead by this many frames:
|
|
|
|
int ahead = mNumFramesWritten - pos;
|
|
|
|
//LOGI("@@@ written: %d, playpos: %d, latency: %d", mNumFramesWritten, pos, mTrack->latency());
|
|
|
|
// which is this many milliseconds, assuming 44100 Hz:
|
|
|
|
ahead /= 44;
|
|
|
|
|
|
|
|
makeVizBuffers((const char*)buffer, size, now + ahead + mTrack->latency());
|
|
|
|
lastWriteTime = now;
|
|
|
|
}
|
|
|
|
ssize_t ret = mTrack->write(buffer, size);
|
|
|
|
mNumFramesWritten += ret / 4; // assume 16 bit stereo
|
|
|
|
return ret;
|
|
|
|
}
|
2009-03-03 19:31:44 -08:00
|
|
|
return NO_INIT;
|
|
|
|
}
|
|
|
|
|
|
|
|
void MediaPlayerService::AudioOutput::stop()
|
|
|
|
{
|
|
|
|
LOGV("stop");
|
|
|
|
if (mTrack) mTrack->stop();
|
2009-09-20 10:42:13 -07:00
|
|
|
lastWriteTime = 0;
|
2009-03-03 19:31:44 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
void MediaPlayerService::AudioOutput::flush()
|
|
|
|
{
|
|
|
|
LOGV("flush");
|
|
|
|
if (mTrack) mTrack->flush();
|
|
|
|
}
|
|
|
|
|
|
|
|
void MediaPlayerService::AudioOutput::pause()
|
|
|
|
{
|
|
|
|
LOGV("pause");
|
|
|
|
if (mTrack) mTrack->pause();
|
|
|
|
}
|
|
|
|
|
|
|
|
void MediaPlayerService::AudioOutput::close()
|
|
|
|
{
|
|
|
|
LOGV("close");
|
|
|
|
delete mTrack;
|
|
|
|
mTrack = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
void MediaPlayerService::AudioOutput::setVolume(float left, float right)
|
|
|
|
{
|
|
|
|
LOGV("setVolume(%f, %f)", left, right);
|
|
|
|
mLeftVolume = left;
|
|
|
|
mRightVolume = right;
|
|
|
|
if (mTrack) {
|
|
|
|
mTrack->setVolume(left, right);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
Squashed commit of the following:
commit 8d179995654c19d9094e51989dc84ed0deba6e04
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 16:30:40 2009 -0700
Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.
commit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 14:06:00 2009 -0700
OMX::list_nodes API, stagefright --list now lists all available OMX components.
commit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 16:04:29 2009 -0700
Reenabled "record" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.
commit d363dd74f611577567c66d25900d6264c306468c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:59:58 2009 -0700
Make non-socket communication in IOMX the default.
commit e89fc82c4fd138c88339887baf72f1d0e67f8660
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:32:33 2009 -0700
The OMX interface now optionally supports communication through the binder only (no sockets involved)
commit 28611de11223fba65299787cdd33f7fdbd6a60a3
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 15:09:13 2009 -0700
Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}
commit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 12:21:46 2009 -0700
Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...
commit ae209a2b5d09caed5dd383c910f238926aaa8fc6
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 09:33:29 2009 -0700
Simple video decoder performance test in "stagefright" commandline tool.
commit 59fe7840111d6f46dd3c48f4950146aed962dbd2
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 16:05:12 2009 -0700
StagefrightPlayer: Properly publish video dimensions by notifying the listener.
commit 51b6598f0e47be5e12d77f1d14e111e71c593638
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 11:38:15 2009 -0700
MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.
commit 31ce53375d748da3e7d30e993ce89dae97fd65ea
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 17:23:37 2009 -0700
Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.
commit a23e312b10631a5d47f5c9831205beac6b84ab36
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 15:10:13 2009 -0700
IGenesisPlayer and friends are no more, java interface now uses local playback instead
of playing inside the media server process.
commit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 13:17:03 2009 -0700
MP3 extractor now supports seeking (only fixed bitrate files currently supported)
commit 96a790405763bfa738d1c6845c99a9fdf579b66f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 7 10:53:54 2009 -0700
Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.
commit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 16:40:02 2009 -0700
Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.
commit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 12:18:29 2009 -0700
Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.
commit 88bffc5ed4033a607080f8777a1c0ec9e3e079de
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 2 12:25:03 2009 -0700
MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.
commit 732aa0a87c7e8d8a10776b275712649954962414
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:58:56 2009 -0700
Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.
commit 669e5944b2fe0542a3b8dba0c441a94503e99fb0
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:43:02 2009 -0700
Proper support for end-of-stream signalling of MediaSources.
commit afb038f2dc594c742e554b2d42b86ffc7434e3fc
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 30 16:48:03 2009 -0700
Support for the "sniffing" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.
commit ed3644b8bd56807e1db4b32433a93a2467f1f3c5
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 13:27:52 2009 -0700
I don't think prepare should automatically start the player.
commit 11eb9b49dc4a0819d366682817cba68613f4fe12
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 11:09:22 2009 -0700
Somewhat better timing information implemented in the MP3Extractor.
commit cab023a1751735c0ed26c8493498a91d8644c6c9
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 25 15:41:56 2009 -0700
Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.
commit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:41:12 2009 -0700
Make sure we only allocate surface buffers if there is video to be played.
commit 7f85e7d92fe81740e102e09905b19354f4ac178e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:19:32 2009 -0700
Clean up a failed merge and implement stub for new API in MediaPlayerBase.
commit f0e9d494a4c03402ea7b54891848ca5a50c421b2
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 15:38:03 2009 -0700
Support yuv420->rgb565 conversion if hardware color conversion is unavailable.
commit 87223248b3099cd5261b94169f84cfd1eba56a8f
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 09:35:56 2009 -0700
Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.
commit e07e651f0325892b797f3eb64dbeca0f317afdfd
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 16:26:42 2009 -0700
Enable assertions in HTTPDataSource.
commit 0dc97adebea1721156880f4b3d5c70f8d50c53b2
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:39 2009 -0700
delete foo.
commit 7f05845dda496e7defee284d32509d127e785784
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:08 2009 -0700
added foo.
commit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 11:44:31 2009 -0700
Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.
commit d6286a6bbca639952491448fa3e609b775a8a814
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 17:11:49 2009 -0700
send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now "works" on the emulator, too.
commit 8d657e004677a7c5dae4479e8519bcaa94c18aad
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 11:58:55 2009 -0700
Instead of erasing codec specific data once it's been output to the omx node, retain the data and just rewind after a stop.
commit 279fede6ba35cbc37c35616c53406bf2c9720202
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 10:58:11 2009 -0700
Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.
commit 0f717f15a6328efd3f34082929cd8ad2351095a9
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 08:44:12 2009 -0700
Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer's notion of time mapping.
commit 0cfb63e33270daf9b215214608ab383f93a31823
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 14:25:48 2009 -0700
Massive rename.
commit 30ed8f476c4431a5275538958b3e281bd17d5eab
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 13:52:41 2009 -0700
send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.
commit b832d04011b2dd8a9632eb7e575bfe1addd1270d
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:21:17 2009 -0700
MediaBuffers can now be "clone()", they sit on top of the same data but have their own range and metadata. Once a clone's refcount drops to 0 it decrements the refcount on the original buffer.
commit 4e944672808bdf1ed40a69f3f602f93ebf7b4049
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:01:01 2009 -0700
Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.
commit ddb7529b4de4828db51432bd405fddd76cfa3b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 16:30:25 2009 -0700
More fudging with A/V sync...
commit 1e5a4d8df08237b58c06c6527a33152ae931addf
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 11:54:20 2009 -0700
API cleanup of MediaSource. Got rid of MediaRing as it really doesn't serve a purpose if OMX decoders are used.
commit 0953c65232aa9753d17d2e25c5f5526eb810cf13
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 16:59:19 2009 -0700
Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.
commit 2085b8ea9484a21fa11f94194a27405d413aeecc
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 10:17:01 2009 -0700
Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.
commit 471f143458a8a0d93cb1bf9568c63c3967279dc6
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 17:32:27 2009 -0700
Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.
commit 4010d371dbe62ce4971e13437776cba32cb0bb3d
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 16:01:07 2009 -0700
Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.
commit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 15:33:58 2009 -0700
Change the TimeSource interface's APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.
commit 08bb46fa61d12e852a424698ddb0c90700328f6e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 11:57:24 2009 -0700
Using framework's Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.
commit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 17:12:03 2009 -0700
MediaSources now publish their format.
commit 7e429a26c57bf936e1a08035d2d11839f9f00310
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 16:38:29 2009 -0700
MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.
commit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 14:39:55 2009 -0700
Sync sample seek support.
commit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 13:51:11 2009 -0700
Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn't. Fixes a problem with seek.
commit e57781d3b2c985a74cd8b60e7c8f2d576459d038
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 10:52:20 2009 -0700
First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.
commit 0551cd78fda78bf66877fb26c5a55e5ae23d8367
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 16:23:38 2009 -0700
Preliminary support for camera input.
commit f8ebafa65d10d5a06944de6b2e2992a33121b857
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 12:13:47 2009 -0700
Allow NativeMediaPlayer access to Surface's getISurface() method.
commit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:38:25 2009 -0700
Header files are now in their own genesis2 hierarchy below frameworks/base/include.
commit f49b8b234b8f6ce83148787eef540dd920f04aa6
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:22:03 2009 -0700
moved MPEG4Writer into libgenesis2.
commit 5224254919dac4728677335ea60429fa16f518b4
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:13:38 2009 -0700
Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.
commit f9a9d84f7e0465ef5d1938a068655ba39527cf99
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 16:43:11 2009 -0700
Support for getPosition() and getDuration().
commit 3206cc5140bcbc88be039f8d94b954af63e69752
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 15:37:45 2009 -0700
Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()
commit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 13:49:50 2009 -0700
Proper disconnection from the OMX service.
commit cdcf47a2c31599109ee42277c7fa14af3c600091
Author: Andreas Huber <andih@google.com>
Date: Tue May 26 17:27:06 2009 -0700
New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.
commit 0586af20ac9ae0403dd190bafd290b0f90549723
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 15:53:19 2009 -0700
Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.
commit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 13:35:30 2009 -0700
Support for http URIs in MediaPlayer, compensate for AudioTrack latency.
commit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 11:33:25 2009 -0700
Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don't shutdown cleanly within a second.
commit 1f0268f4f14ad5215668f34e06a420850174d665
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:33:16 2009 -0700
and foo.txt is gone again.
commit 0feca4e0919f345704d78ec78894bac5027bd5ed
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:28:49 2009 -0700
added foo.txt
commit 9c7d04b35cdc895a2de3602dc46522f608bd205f
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:28:04 2009 -0700
delete foo again
commit fec3ca1720992cce51b9a92b86b945da88a6b16c
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:27:45 2009 -0700
weird
commit 30a6571302333146e537e537a3a8986245cca87c
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:18:55 2009 -0700
reverse test
commit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:18:22 2009 -0700
test
commit a9eeafec6e46072cac41e54ebdbd153cb7ae7518
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 16:37:50 2009 -0700
Use the video ring again for now.
commit e05ff3d3c1c4f89ef499a2b172138a775fd694e3
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 15:42:19 2009 -0700
Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.
commit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 09:56:11 2009 -0700
Fix the build, all binder-related headers have moved and there's a new library libbinde
r to link against now.
commit 23e0a24404d16c898c2c6b3c7495ad303844bc71
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 08:42:04 2009 -0700
Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss & friends) not currently working.
commit 9cd77adb1ac194197364ffad00a0d7215f458e1a
Author: Andreas Huber <andih@google.com>
Date: Wed May 20 12:31:45 2009 -0700
New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.
commit 5c510fb55ffed7ec25305999ed9b6c1eec48d503
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 15:40:06 2009 -0700
Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.
commit f6c7a2040b8eb43326621f12c3a936e09b3a70e3
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 11:03:04 2009 -0700
The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.
commit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac
Author: Andreas Huber <andih@google.com>
Date: Thu May 14 12:39:34 2009 -0700
dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.
commit 380369f54a8027cbc9349305184d6bf527a24efe
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 17:32:00 2009 -0700
Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.
commit b5cada56b9089a23e0c461352a97dc71e08b424d
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 12:11:06 2009 -0700
Introduction of TimeSource class, clean shutdown of OMX Nodes.
commit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 17:11:56 2009 -0700
Helper classes MediaRing and MediaPlayer.
commit 9aaed8739b4bb941473da367fb88f63224d2f1b7
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 14:19:18 2009 -0700
Using mmap to map a file instead of going through FILE* improves performance, who knew?
commit ad097a78bbd002c59193ffdc39b64935928426c7
Author: Andreas Huber <andih@google.com>
Date: Mon May 11 16:42:42 2009 -0700
Added a performance test, refactored AudioDecoder a little.
commit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 16:19:29 2009 -0700
No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.
commit 858955b42c29b8033841a8caaa56c2a449810ef3
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 14:02:38 2009 -0700
Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.
commit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 13:21:45 2009 -0700
Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes
commit 3941fcf87a48dda81683df727dfb1381f62d9184
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 16:37:45 2009 -0700
some refactoring. Most streams play now.
commit d3152862840d4dd39068e5197bec8674f3d55dd5
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 15:37:32 2009 -0700
Misc. changes to support H264 decoding using the qcom hardware decoder
commit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 09:28:18 2009 -0700
Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.
commit fe6a50943f885e065d4061aa727a54417e9f36db
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 14:18:27 2009 -0700
Refactored commandline app instantiation of the decoder.
commit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 10:41:14 2009 -0700
Proper audio/video synchronization.
commit 569ee3a23f600f4b6b87c6178c0223b06e97f201
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 09:17:20 2009 -0700
Preliminary support for timestamps.
commit e4e302a89207550d8a7170d8c0afbd9c15047c84
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:13:12 2009 -0700
Another quick hack job to make CachingDataSource thread-safe as well.
commit dfb376a58bd7c09aa04e89558186fcfe13fe696c
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:08:14 2009 -0700
Quick rushjob to make FileSource and SampleTable thread safe.
commit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 17:22:04 2009 -0700
Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.
commit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 09:26:42 2009 -0700
Getting rid of old sample code to drive the OMXNode binder interface.
commit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 16:21:11 2009 -0700
Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder
commit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 15:56:19 2009 -0700
Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)
commit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 11:52:48 2009 -0700
Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.
commit 1470427866b0d3e0ce6848b4edc01c13a09be289
Author: Andreas Huber <andih@google.com>
Date: Thu Apr 30 15:19:31 2009 -0700
Another checkpoint, amr decoding now functional.
commit e612d044439f56331b6a2bc4a88622e04d4d42e7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 12:11:29 2009 -0700
string wrapper around String8, various fixes, shoutcast now works again.
commit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 11:08:18 2009 -0700
Initial check-in of OMXNode binder interface.
commit 7880d2957f74c0d7fba7679431ff5adb3780543b
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 10:05:01 2009 -0700
Initial check-in of both libgenesis2 and the genesis2 commandline tool.
2009-07-14 16:56:47 -07:00
|
|
|
// static
|
|
|
|
void MediaPlayerService::AudioOutput::CallbackWrapper(
|
|
|
|
int event, void *cookie, void *info) {
|
|
|
|
if (event != AudioTrack::EVENT_MORE_DATA) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
AudioOutput *me = (AudioOutput *)cookie;
|
|
|
|
AudioTrack::Buffer *buffer = (AudioTrack::Buffer *)info;
|
|
|
|
|
|
|
|
(*me->mCallback)(
|
|
|
|
me, buffer->raw, buffer->size, me->mCallbackCookie);
|
|
|
|
}
|
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
#undef LOG_TAG
|
|
|
|
#define LOG_TAG "AudioCache"
|
|
|
|
MediaPlayerService::AudioCache::AudioCache(const char* name) :
|
|
|
|
mChannelCount(0), mFrameCount(1024), mSampleRate(0), mSize(0),
|
|
|
|
mError(NO_ERROR), mCommandComplete(false)
|
|
|
|
{
|
|
|
|
// create ashmem heap
|
|
|
|
mHeap = new MemoryHeapBase(kDefaultHeapSize, 0, name);
|
|
|
|
}
|
|
|
|
|
|
|
|
uint32_t MediaPlayerService::AudioCache::latency () const
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
float MediaPlayerService::AudioCache::msecsPerFrame() const
|
|
|
|
{
|
|
|
|
return mMsecsPerFrame;
|
|
|
|
}
|
|
|
|
|
Squashed commit of the following:
commit 8d179995654c19d9094e51989dc84ed0deba6e04
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 16:30:40 2009 -0700
Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.
commit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 14:06:00 2009 -0700
OMX::list_nodes API, stagefright --list now lists all available OMX components.
commit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 16:04:29 2009 -0700
Reenabled "record" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.
commit d363dd74f611577567c66d25900d6264c306468c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:59:58 2009 -0700
Make non-socket communication in IOMX the default.
commit e89fc82c4fd138c88339887baf72f1d0e67f8660
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:32:33 2009 -0700
The OMX interface now optionally supports communication through the binder only (no sockets involved)
commit 28611de11223fba65299787cdd33f7fdbd6a60a3
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 15:09:13 2009 -0700
Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}
commit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 12:21:46 2009 -0700
Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...
commit ae209a2b5d09caed5dd383c910f238926aaa8fc6
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 09:33:29 2009 -0700
Simple video decoder performance test in "stagefright" commandline tool.
commit 59fe7840111d6f46dd3c48f4950146aed962dbd2
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 16:05:12 2009 -0700
StagefrightPlayer: Properly publish video dimensions by notifying the listener.
commit 51b6598f0e47be5e12d77f1d14e111e71c593638
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 11:38:15 2009 -0700
MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.
commit 31ce53375d748da3e7d30e993ce89dae97fd65ea
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 17:23:37 2009 -0700
Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.
commit a23e312b10631a5d47f5c9831205beac6b84ab36
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 15:10:13 2009 -0700
IGenesisPlayer and friends are no more, java interface now uses local playback instead
of playing inside the media server process.
commit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 13:17:03 2009 -0700
MP3 extractor now supports seeking (only fixed bitrate files currently supported)
commit 96a790405763bfa738d1c6845c99a9fdf579b66f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 7 10:53:54 2009 -0700
Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.
commit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 16:40:02 2009 -0700
Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.
commit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 12:18:29 2009 -0700
Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.
commit 88bffc5ed4033a607080f8777a1c0ec9e3e079de
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 2 12:25:03 2009 -0700
MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.
commit 732aa0a87c7e8d8a10776b275712649954962414
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:58:56 2009 -0700
Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.
commit 669e5944b2fe0542a3b8dba0c441a94503e99fb0
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:43:02 2009 -0700
Proper support for end-of-stream signalling of MediaSources.
commit afb038f2dc594c742e554b2d42b86ffc7434e3fc
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 30 16:48:03 2009 -0700
Support for the "sniffing" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.
commit ed3644b8bd56807e1db4b32433a93a2467f1f3c5
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 13:27:52 2009 -0700
I don't think prepare should automatically start the player.
commit 11eb9b49dc4a0819d366682817cba68613f4fe12
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 11:09:22 2009 -0700
Somewhat better timing information implemented in the MP3Extractor.
commit cab023a1751735c0ed26c8493498a91d8644c6c9
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 25 15:41:56 2009 -0700
Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.
commit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:41:12 2009 -0700
Make sure we only allocate surface buffers if there is video to be played.
commit 7f85e7d92fe81740e102e09905b19354f4ac178e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:19:32 2009 -0700
Clean up a failed merge and implement stub for new API in MediaPlayerBase.
commit f0e9d494a4c03402ea7b54891848ca5a50c421b2
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 15:38:03 2009 -0700
Support yuv420->rgb565 conversion if hardware color conversion is unavailable.
commit 87223248b3099cd5261b94169f84cfd1eba56a8f
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 09:35:56 2009 -0700
Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.
commit e07e651f0325892b797f3eb64dbeca0f317afdfd
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 16:26:42 2009 -0700
Enable assertions in HTTPDataSource.
commit 0dc97adebea1721156880f4b3d5c70f8d50c53b2
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:39 2009 -0700
delete foo.
commit 7f05845dda496e7defee284d32509d127e785784
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:08 2009 -0700
added foo.
commit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 11:44:31 2009 -0700
Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.
commit d6286a6bbca639952491448fa3e609b775a8a814
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 17:11:49 2009 -0700
send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now "works" on the emulator, too.
commit 8d657e004677a7c5dae4479e8519bcaa94c18aad
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 11:58:55 2009 -0700
Instead of erasing codec specific data once it's been output to the omx node, retain the data and just rewind after a stop.
commit 279fede6ba35cbc37c35616c53406bf2c9720202
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 10:58:11 2009 -0700
Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.
commit 0f717f15a6328efd3f34082929cd8ad2351095a9
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 08:44:12 2009 -0700
Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer's notion of time mapping.
commit 0cfb63e33270daf9b215214608ab383f93a31823
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 14:25:48 2009 -0700
Massive rename.
commit 30ed8f476c4431a5275538958b3e281bd17d5eab
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 13:52:41 2009 -0700
send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.
commit b832d04011b2dd8a9632eb7e575bfe1addd1270d
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:21:17 2009 -0700
MediaBuffers can now be "clone()", they sit on top of the same data but have their own range and metadata. Once a clone's refcount drops to 0 it decrements the refcount on the original buffer.
commit 4e944672808bdf1ed40a69f3f602f93ebf7b4049
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:01:01 2009 -0700
Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.
commit ddb7529b4de4828db51432bd405fddd76cfa3b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 16:30:25 2009 -0700
More fudging with A/V sync...
commit 1e5a4d8df08237b58c06c6527a33152ae931addf
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 11:54:20 2009 -0700
API cleanup of MediaSource. Got rid of MediaRing as it really doesn't serve a purpose if OMX decoders are used.
commit 0953c65232aa9753d17d2e25c5f5526eb810cf13
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 16:59:19 2009 -0700
Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.
commit 2085b8ea9484a21fa11f94194a27405d413aeecc
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 10:17:01 2009 -0700
Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.
commit 471f143458a8a0d93cb1bf9568c63c3967279dc6
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 17:32:27 2009 -0700
Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.
commit 4010d371dbe62ce4971e13437776cba32cb0bb3d
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 16:01:07 2009 -0700
Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.
commit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 15:33:58 2009 -0700
Change the TimeSource interface's APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.
commit 08bb46fa61d12e852a424698ddb0c90700328f6e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 11:57:24 2009 -0700
Using framework's Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.
commit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 17:12:03 2009 -0700
MediaSources now publish their format.
commit 7e429a26c57bf936e1a08035d2d11839f9f00310
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 16:38:29 2009 -0700
MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.
commit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 14:39:55 2009 -0700
Sync sample seek support.
commit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 13:51:11 2009 -0700
Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn't. Fixes a problem with seek.
commit e57781d3b2c985a74cd8b60e7c8f2d576459d038
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 10:52:20 2009 -0700
First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.
commit 0551cd78fda78bf66877fb26c5a55e5ae23d8367
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 16:23:38 2009 -0700
Preliminary support for camera input.
commit f8ebafa65d10d5a06944de6b2e2992a33121b857
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 12:13:47 2009 -0700
Allow NativeMediaPlayer access to Surface's getISurface() method.
commit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:38:25 2009 -0700
Header files are now in their own genesis2 hierarchy below frameworks/base/include.
commit f49b8b234b8f6ce83148787eef540dd920f04aa6
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:22:03 2009 -0700
moved MPEG4Writer into libgenesis2.
commit 5224254919dac4728677335ea60429fa16f518b4
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:13:38 2009 -0700
Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.
commit f9a9d84f7e0465ef5d1938a068655ba39527cf99
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 16:43:11 2009 -0700
Support for getPosition() and getDuration().
commit 3206cc5140bcbc88be039f8d94b954af63e69752
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 15:37:45 2009 -0700
Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()
commit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 13:49:50 2009 -0700
Proper disconnection from the OMX service.
commit cdcf47a2c31599109ee42277c7fa14af3c600091
Author: Andreas Huber <andih@google.com>
Date: Tue May 26 17:27:06 2009 -0700
New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.
commit 0586af20ac9ae0403dd190bafd290b0f90549723
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 15:53:19 2009 -0700
Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.
commit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 13:35:30 2009 -0700
Support for http URIs in MediaPlayer, compensate for AudioTrack latency.
commit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 11:33:25 2009 -0700
Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don't shutdown cleanly within a second.
commit 1f0268f4f14ad5215668f34e06a420850174d665
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:33:16 2009 -0700
and foo.txt is gone again.
commit 0feca4e0919f345704d78ec78894bac5027bd5ed
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:28:49 2009 -0700
added foo.txt
commit 9c7d04b35cdc895a2de3602dc46522f608bd205f
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:28:04 2009 -0700
delete foo again
commit fec3ca1720992cce51b9a92b86b945da88a6b16c
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:27:45 2009 -0700
weird
commit 30a6571302333146e537e537a3a8986245cca87c
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:18:55 2009 -0700
reverse test
commit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:18:22 2009 -0700
test
commit a9eeafec6e46072cac41e54ebdbd153cb7ae7518
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 16:37:50 2009 -0700
Use the video ring again for now.
commit e05ff3d3c1c4f89ef499a2b172138a775fd694e3
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 15:42:19 2009 -0700
Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.
commit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 09:56:11 2009 -0700
Fix the build, all binder-related headers have moved and there's a new library libbinde
r to link against now.
commit 23e0a24404d16c898c2c6b3c7495ad303844bc71
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 08:42:04 2009 -0700
Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss & friends) not currently working.
commit 9cd77adb1ac194197364ffad00a0d7215f458e1a
Author: Andreas Huber <andih@google.com>
Date: Wed May 20 12:31:45 2009 -0700
New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.
commit 5c510fb55ffed7ec25305999ed9b6c1eec48d503
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 15:40:06 2009 -0700
Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.
commit f6c7a2040b8eb43326621f12c3a936e09b3a70e3
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 11:03:04 2009 -0700
The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.
commit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac
Author: Andreas Huber <andih@google.com>
Date: Thu May 14 12:39:34 2009 -0700
dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.
commit 380369f54a8027cbc9349305184d6bf527a24efe
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 17:32:00 2009 -0700
Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.
commit b5cada56b9089a23e0c461352a97dc71e08b424d
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 12:11:06 2009 -0700
Introduction of TimeSource class, clean shutdown of OMX Nodes.
commit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 17:11:56 2009 -0700
Helper classes MediaRing and MediaPlayer.
commit 9aaed8739b4bb941473da367fb88f63224d2f1b7
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 14:19:18 2009 -0700
Using mmap to map a file instead of going through FILE* improves performance, who knew?
commit ad097a78bbd002c59193ffdc39b64935928426c7
Author: Andreas Huber <andih@google.com>
Date: Mon May 11 16:42:42 2009 -0700
Added a performance test, refactored AudioDecoder a little.
commit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 16:19:29 2009 -0700
No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.
commit 858955b42c29b8033841a8caaa56c2a449810ef3
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 14:02:38 2009 -0700
Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.
commit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 13:21:45 2009 -0700
Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes
commit 3941fcf87a48dda81683df727dfb1381f62d9184
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 16:37:45 2009 -0700
some refactoring. Most streams play now.
commit d3152862840d4dd39068e5197bec8674f3d55dd5
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 15:37:32 2009 -0700
Misc. changes to support H264 decoding using the qcom hardware decoder
commit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 09:28:18 2009 -0700
Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.
commit fe6a50943f885e065d4061aa727a54417e9f36db
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 14:18:27 2009 -0700
Refactored commandline app instantiation of the decoder.
commit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 10:41:14 2009 -0700
Proper audio/video synchronization.
commit 569ee3a23f600f4b6b87c6178c0223b06e97f201
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 09:17:20 2009 -0700
Preliminary support for timestamps.
commit e4e302a89207550d8a7170d8c0afbd9c15047c84
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:13:12 2009 -0700
Another quick hack job to make CachingDataSource thread-safe as well.
commit dfb376a58bd7c09aa04e89558186fcfe13fe696c
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:08:14 2009 -0700
Quick rushjob to make FileSource and SampleTable thread safe.
commit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 17:22:04 2009 -0700
Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.
commit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 09:26:42 2009 -0700
Getting rid of old sample code to drive the OMXNode binder interface.
commit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 16:21:11 2009 -0700
Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder
commit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 15:56:19 2009 -0700
Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)
commit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 11:52:48 2009 -0700
Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.
commit 1470427866b0d3e0ce6848b4edc01c13a09be289
Author: Andreas Huber <andih@google.com>
Date: Thu Apr 30 15:19:31 2009 -0700
Another checkpoint, amr decoding now functional.
commit e612d044439f56331b6a2bc4a88622e04d4d42e7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 12:11:29 2009 -0700
string wrapper around String8, various fixes, shoutcast now works again.
commit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 11:08:18 2009 -0700
Initial check-in of OMXNode binder interface.
commit 7880d2957f74c0d7fba7679431ff5adb3780543b
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 10:05:01 2009 -0700
Initial check-in of both libgenesis2 and the genesis2 commandline tool.
2009-07-14 16:56:47 -07:00
|
|
|
status_t MediaPlayerService::AudioCache::open(
|
|
|
|
uint32_t sampleRate, int channelCount, int format, int bufferCount,
|
|
|
|
AudioCallback cb, void *cookie)
|
2009-03-03 19:31:44 -08:00
|
|
|
{
|
Squashed commit of the following:
commit 8d179995654c19d9094e51989dc84ed0deba6e04
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 16:30:40 2009 -0700
Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.
commit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 14:06:00 2009 -0700
OMX::list_nodes API, stagefright --list now lists all available OMX components.
commit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 16:04:29 2009 -0700
Reenabled "record" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.
commit d363dd74f611577567c66d25900d6264c306468c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:59:58 2009 -0700
Make non-socket communication in IOMX the default.
commit e89fc82c4fd138c88339887baf72f1d0e67f8660
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:32:33 2009 -0700
The OMX interface now optionally supports communication through the binder only (no sockets involved)
commit 28611de11223fba65299787cdd33f7fdbd6a60a3
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 15:09:13 2009 -0700
Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}
commit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 12:21:46 2009 -0700
Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...
commit ae209a2b5d09caed5dd383c910f238926aaa8fc6
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 09:33:29 2009 -0700
Simple video decoder performance test in "stagefright" commandline tool.
commit 59fe7840111d6f46dd3c48f4950146aed962dbd2
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 16:05:12 2009 -0700
StagefrightPlayer: Properly publish video dimensions by notifying the listener.
commit 51b6598f0e47be5e12d77f1d14e111e71c593638
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 11:38:15 2009 -0700
MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.
commit 31ce53375d748da3e7d30e993ce89dae97fd65ea
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 17:23:37 2009 -0700
Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.
commit a23e312b10631a5d47f5c9831205beac6b84ab36
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 15:10:13 2009 -0700
IGenesisPlayer and friends are no more, java interface now uses local playback instead
of playing inside the media server process.
commit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 13:17:03 2009 -0700
MP3 extractor now supports seeking (only fixed bitrate files currently supported)
commit 96a790405763bfa738d1c6845c99a9fdf579b66f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 7 10:53:54 2009 -0700
Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.
commit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 16:40:02 2009 -0700
Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.
commit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 12:18:29 2009 -0700
Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.
commit 88bffc5ed4033a607080f8777a1c0ec9e3e079de
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 2 12:25:03 2009 -0700
MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.
commit 732aa0a87c7e8d8a10776b275712649954962414
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:58:56 2009 -0700
Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.
commit 669e5944b2fe0542a3b8dba0c441a94503e99fb0
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:43:02 2009 -0700
Proper support for end-of-stream signalling of MediaSources.
commit afb038f2dc594c742e554b2d42b86ffc7434e3fc
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 30 16:48:03 2009 -0700
Support for the "sniffing" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.
commit ed3644b8bd56807e1db4b32433a93a2467f1f3c5
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 13:27:52 2009 -0700
I don't think prepare should automatically start the player.
commit 11eb9b49dc4a0819d366682817cba68613f4fe12
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 11:09:22 2009 -0700
Somewhat better timing information implemented in the MP3Extractor.
commit cab023a1751735c0ed26c8493498a91d8644c6c9
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 25 15:41:56 2009 -0700
Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.
commit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:41:12 2009 -0700
Make sure we only allocate surface buffers if there is video to be played.
commit 7f85e7d92fe81740e102e09905b19354f4ac178e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:19:32 2009 -0700
Clean up a failed merge and implement stub for new API in MediaPlayerBase.
commit f0e9d494a4c03402ea7b54891848ca5a50c421b2
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 15:38:03 2009 -0700
Support yuv420->rgb565 conversion if hardware color conversion is unavailable.
commit 87223248b3099cd5261b94169f84cfd1eba56a8f
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 09:35:56 2009 -0700
Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.
commit e07e651f0325892b797f3eb64dbeca0f317afdfd
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 16:26:42 2009 -0700
Enable assertions in HTTPDataSource.
commit 0dc97adebea1721156880f4b3d5c70f8d50c53b2
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:39 2009 -0700
delete foo.
commit 7f05845dda496e7defee284d32509d127e785784
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:08 2009 -0700
added foo.
commit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 11:44:31 2009 -0700
Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.
commit d6286a6bbca639952491448fa3e609b775a8a814
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 17:11:49 2009 -0700
send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now "works" on the emulator, too.
commit 8d657e004677a7c5dae4479e8519bcaa94c18aad
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 11:58:55 2009 -0700
Instead of erasing codec specific data once it's been output to the omx node, retain the data and just rewind after a stop.
commit 279fede6ba35cbc37c35616c53406bf2c9720202
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 10:58:11 2009 -0700
Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.
commit 0f717f15a6328efd3f34082929cd8ad2351095a9
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 08:44:12 2009 -0700
Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer's notion of time mapping.
commit 0cfb63e33270daf9b215214608ab383f93a31823
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 14:25:48 2009 -0700
Massive rename.
commit 30ed8f476c4431a5275538958b3e281bd17d5eab
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 13:52:41 2009 -0700
send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.
commit b832d04011b2dd8a9632eb7e575bfe1addd1270d
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:21:17 2009 -0700
MediaBuffers can now be "clone()", they sit on top of the same data but have their own range and metadata. Once a clone's refcount drops to 0 it decrements the refcount on the original buffer.
commit 4e944672808bdf1ed40a69f3f602f93ebf7b4049
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:01:01 2009 -0700
Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.
commit ddb7529b4de4828db51432bd405fddd76cfa3b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 16:30:25 2009 -0700
More fudging with A/V sync...
commit 1e5a4d8df08237b58c06c6527a33152ae931addf
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 11:54:20 2009 -0700
API cleanup of MediaSource. Got rid of MediaRing as it really doesn't serve a purpose if OMX decoders are used.
commit 0953c65232aa9753d17d2e25c5f5526eb810cf13
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 16:59:19 2009 -0700
Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.
commit 2085b8ea9484a21fa11f94194a27405d413aeecc
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 10:17:01 2009 -0700
Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.
commit 471f143458a8a0d93cb1bf9568c63c3967279dc6
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 17:32:27 2009 -0700
Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.
commit 4010d371dbe62ce4971e13437776cba32cb0bb3d
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 16:01:07 2009 -0700
Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.
commit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 15:33:58 2009 -0700
Change the TimeSource interface's APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.
commit 08bb46fa61d12e852a424698ddb0c90700328f6e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 11:57:24 2009 -0700
Using framework's Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.
commit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 17:12:03 2009 -0700
MediaSources now publish their format.
commit 7e429a26c57bf936e1a08035d2d11839f9f00310
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 16:38:29 2009 -0700
MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.
commit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 14:39:55 2009 -0700
Sync sample seek support.
commit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 13:51:11 2009 -0700
Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn't. Fixes a problem with seek.
commit e57781d3b2c985a74cd8b60e7c8f2d576459d038
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 10:52:20 2009 -0700
First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.
commit 0551cd78fda78bf66877fb26c5a55e5ae23d8367
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 16:23:38 2009 -0700
Preliminary support for camera input.
commit f8ebafa65d10d5a06944de6b2e2992a33121b857
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 12:13:47 2009 -0700
Allow NativeMediaPlayer access to Surface's getISurface() method.
commit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:38:25 2009 -0700
Header files are now in their own genesis2 hierarchy below frameworks/base/include.
commit f49b8b234b8f6ce83148787eef540dd920f04aa6
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:22:03 2009 -0700
moved MPEG4Writer into libgenesis2.
commit 5224254919dac4728677335ea60429fa16f518b4
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:13:38 2009 -0700
Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.
commit f9a9d84f7e0465ef5d1938a068655ba39527cf99
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 16:43:11 2009 -0700
Support for getPosition() and getDuration().
commit 3206cc5140bcbc88be039f8d94b954af63e69752
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 15:37:45 2009 -0700
Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()
commit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 13:49:50 2009 -0700
Proper disconnection from the OMX service.
commit cdcf47a2c31599109ee42277c7fa14af3c600091
Author: Andreas Huber <andih@google.com>
Date: Tue May 26 17:27:06 2009 -0700
New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.
commit 0586af20ac9ae0403dd190bafd290b0f90549723
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 15:53:19 2009 -0700
Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.
commit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 13:35:30 2009 -0700
Support for http URIs in MediaPlayer, compensate for AudioTrack latency.
commit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 11:33:25 2009 -0700
Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don't shutdown cleanly within a second.
commit 1f0268f4f14ad5215668f34e06a420850174d665
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:33:16 2009 -0700
and foo.txt is gone again.
commit 0feca4e0919f345704d78ec78894bac5027bd5ed
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:28:49 2009 -0700
added foo.txt
commit 9c7d04b35cdc895a2de3602dc46522f608bd205f
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:28:04 2009 -0700
delete foo again
commit fec3ca1720992cce51b9a92b86b945da88a6b16c
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:27:45 2009 -0700
weird
commit 30a6571302333146e537e537a3a8986245cca87c
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:18:55 2009 -0700
reverse test
commit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:18:22 2009 -0700
test
commit a9eeafec6e46072cac41e54ebdbd153cb7ae7518
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 16:37:50 2009 -0700
Use the video ring again for now.
commit e05ff3d3c1c4f89ef499a2b172138a775fd694e3
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 15:42:19 2009 -0700
Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.
commit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 09:56:11 2009 -0700
Fix the build, all binder-related headers have moved and there's a new library libbinde
r to link against now.
commit 23e0a24404d16c898c2c6b3c7495ad303844bc71
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 08:42:04 2009 -0700
Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss & friends) not currently working.
commit 9cd77adb1ac194197364ffad00a0d7215f458e1a
Author: Andreas Huber <andih@google.com>
Date: Wed May 20 12:31:45 2009 -0700
New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.
commit 5c510fb55ffed7ec25305999ed9b6c1eec48d503
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 15:40:06 2009 -0700
Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.
commit f6c7a2040b8eb43326621f12c3a936e09b3a70e3
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 11:03:04 2009 -0700
The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.
commit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac
Author: Andreas Huber <andih@google.com>
Date: Thu May 14 12:39:34 2009 -0700
dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.
commit 380369f54a8027cbc9349305184d6bf527a24efe
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 17:32:00 2009 -0700
Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.
commit b5cada56b9089a23e0c461352a97dc71e08b424d
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 12:11:06 2009 -0700
Introduction of TimeSource class, clean shutdown of OMX Nodes.
commit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 17:11:56 2009 -0700
Helper classes MediaRing and MediaPlayer.
commit 9aaed8739b4bb941473da367fb88f63224d2f1b7
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 14:19:18 2009 -0700
Using mmap to map a file instead of going through FILE* improves performance, who knew?
commit ad097a78bbd002c59193ffdc39b64935928426c7
Author: Andreas Huber <andih@google.com>
Date: Mon May 11 16:42:42 2009 -0700
Added a performance test, refactored AudioDecoder a little.
commit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 16:19:29 2009 -0700
No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.
commit 858955b42c29b8033841a8caaa56c2a449810ef3
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 14:02:38 2009 -0700
Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.
commit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 13:21:45 2009 -0700
Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes
commit 3941fcf87a48dda81683df727dfb1381f62d9184
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 16:37:45 2009 -0700
some refactoring. Most streams play now.
commit d3152862840d4dd39068e5197bec8674f3d55dd5
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 15:37:32 2009 -0700
Misc. changes to support H264 decoding using the qcom hardware decoder
commit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 09:28:18 2009 -0700
Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.
commit fe6a50943f885e065d4061aa727a54417e9f36db
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 14:18:27 2009 -0700
Refactored commandline app instantiation of the decoder.
commit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 10:41:14 2009 -0700
Proper audio/video synchronization.
commit 569ee3a23f600f4b6b87c6178c0223b06e97f201
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 09:17:20 2009 -0700
Preliminary support for timestamps.
commit e4e302a89207550d8a7170d8c0afbd9c15047c84
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:13:12 2009 -0700
Another quick hack job to make CachingDataSource thread-safe as well.
commit dfb376a58bd7c09aa04e89558186fcfe13fe696c
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:08:14 2009 -0700
Quick rushjob to make FileSource and SampleTable thread safe.
commit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 17:22:04 2009 -0700
Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.
commit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 09:26:42 2009 -0700
Getting rid of old sample code to drive the OMXNode binder interface.
commit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 16:21:11 2009 -0700
Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder
commit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 15:56:19 2009 -0700
Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)
commit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 11:52:48 2009 -0700
Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.
commit 1470427866b0d3e0ce6848b4edc01c13a09be289
Author: Andreas Huber <andih@google.com>
Date: Thu Apr 30 15:19:31 2009 -0700
Another checkpoint, amr decoding now functional.
commit e612d044439f56331b6a2bc4a88622e04d4d42e7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 12:11:29 2009 -0700
string wrapper around String8, various fixes, shoutcast now works again.
commit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 11:08:18 2009 -0700
Initial check-in of OMXNode binder interface.
commit 7880d2957f74c0d7fba7679431ff5adb3780543b
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 10:05:01 2009 -0700
Initial check-in of both libgenesis2 and the genesis2 commandline tool.
2009-07-14 16:56:47 -07:00
|
|
|
if (cb != NULL) {
|
|
|
|
return UNKNOWN_ERROR; // TODO: implement this.
|
|
|
|
}
|
|
|
|
|
2009-03-03 19:31:44 -08:00
|
|
|
LOGV("open(%u, %d, %d, %d)", sampleRate, channelCount, format, bufferCount);
|
|
|
|
if (mHeap->getHeapID() < 0) return NO_INIT;
|
|
|
|
mSampleRate = sampleRate;
|
|
|
|
mChannelCount = (uint16_t)channelCount;
|
|
|
|
mFormat = (uint16_t)format;
|
|
|
|
mMsecsPerFrame = 1.e3 / (float) sampleRate;
|
|
|
|
return NO_ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
ssize_t MediaPlayerService::AudioCache::write(const void* buffer, size_t size)
|
|
|
|
{
|
|
|
|
LOGV("write(%p, %u)", buffer, size);
|
|
|
|
if ((buffer == 0) || (size == 0)) return size;
|
|
|
|
|
|
|
|
uint8_t* p = static_cast<uint8_t*>(mHeap->getBase());
|
|
|
|
if (p == NULL) return NO_INIT;
|
|
|
|
p += mSize;
|
|
|
|
LOGV("memcpy(%p, %p, %u)", p, buffer, size);
|
|
|
|
if (mSize + size > mHeap->getSize()) {
|
|
|
|
LOGE("Heap size overflow! req size: %d, max size: %d", (mSize + size), mHeap->getSize());
|
|
|
|
size = mHeap->getSize() - mSize;
|
|
|
|
}
|
|
|
|
memcpy(p, buffer, size);
|
|
|
|
mSize += size;
|
|
|
|
return size;
|
|
|
|
}
|
|
|
|
|
|
|
|
// call with lock held
|
|
|
|
status_t MediaPlayerService::AudioCache::wait()
|
|
|
|
{
|
|
|
|
Mutex::Autolock lock(mLock);
|
|
|
|
if (!mCommandComplete) {
|
|
|
|
mSignal.wait(mLock);
|
|
|
|
}
|
|
|
|
mCommandComplete = false;
|
|
|
|
|
|
|
|
if (mError == NO_ERROR) {
|
|
|
|
LOGV("wait - success");
|
|
|
|
} else {
|
|
|
|
LOGV("wait - error");
|
|
|
|
}
|
|
|
|
return mError;
|
|
|
|
}
|
|
|
|
|
|
|
|
void MediaPlayerService::AudioCache::notify(void* cookie, int msg, int ext1, int ext2)
|
|
|
|
{
|
|
|
|
LOGV("notify(%p, %d, %d, %d)", cookie, msg, ext1, ext2);
|
|
|
|
AudioCache* p = static_cast<AudioCache*>(cookie);
|
|
|
|
|
|
|
|
// ignore buffering messages
|
|
|
|
if (msg == MEDIA_BUFFERING_UPDATE) return;
|
|
|
|
|
|
|
|
// set error condition
|
|
|
|
if (msg == MEDIA_ERROR) {
|
|
|
|
LOGE("Error %d, %d occurred", ext1, ext2);
|
|
|
|
p->mError = ext1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// wake up thread
|
|
|
|
LOGV("wakeup thread");
|
|
|
|
p->mCommandComplete = true;
|
|
|
|
p->mSignal.signal();
|
|
|
|
}
|
|
|
|
|
2009-07-20 15:07:26 -07:00
|
|
|
} // namespace android
|