Skip to content

Commit d06c296

Browse files
author
James Dong
committed
Incorporate all the changes in external/opencore in git master branch
- add two patches for fixing thumbnail extraction and authoring compatibility - remove 2way engine from system image Not done yet (pending one fix from PV)
1 parent 05831c6 commit d06c296

File tree

4,551 files changed

+520993
-183031
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

4,551 files changed

+520993
-183031
lines changed

Android.mk

+31-28
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,43 @@
11
ifneq ($(BUILD_WITHOUT_PV),true)
2-
32
LOCAL_PATH := $(call my-dir)
3+
#PV_TOP := $(LOCAL_PATH)
44
include $(CLEAR_VARS)
55

66
# Set up the PV variables.
77
include $(LOCAL_PATH)/Config.mk
88

99
# Install the default configuration file
1010
# if no value-add configuration is present.
11-
ifeq ($(VALUE_ADD), false)
12-
$(call add-prebuilt-files, ETC, pvplayer.conf)
11+
ifneq ($(VALUE_ADD),1)
12+
$(call add-prebuilt-files, ETC, pvplayer.cfg)
13+
endif
14+
15+
16+
include $(PV_TOP)/build_config/opencore_dynamic/Android_opencore_common.mk
17+
include $(PV_TOP)/build_config/opencore_dynamic/Android_opencore_author.mk
18+
include $(PV_TOP)/build_config/opencore_dynamic/Android_opencore_player.mk
19+
#include $(PV_TOP)/build_config/opencore_dynamic/Android_opencore_2way.mk
20+
include $(PV_TOP)/build_config/opencore_dynamic/Android_omx_sharedlibrary.mk
21+
include $(PV_TOP)/build_config/opencore_dynamic/Android_omx_avcdec_sharedlibrary.mk
22+
include $(PV_TOP)/build_config/opencore_dynamic/Android_omx_m4vdec_sharedlibrary.mk
23+
include $(PV_TOP)/build_config/opencore_dynamic/Android_omx_aacdec_sharedlibrary.mk
24+
include $(PV_TOP)/build_config/opencore_dynamic/Android_omx_amrdec_sharedlibrary.mk
25+
include $(PV_TOP)/build_config/opencore_dynamic/Android_omx_mp3dec_sharedlibrary.mk
26+
include $(PV_TOP)/build_config/opencore_dynamic/Android_omx_avcenc_sharedlibrary.mk
27+
include $(PV_TOP)/build_config/opencore_dynamic/Android_omx_m4venc_sharedlibrary.mk
28+
include $(PV_TOP)/build_config/opencore_dynamic/Android_omx_amrenc_sharedlibrary.mk
29+
include $(PV_TOP)/build_config/opencore_dynamic/Android_opencore_net_support.mk
30+
include $(PV_TOP)/build_config/opencore_dynamic/Android_opencore_downloadreg.mk
31+
include $(PV_TOP)/build_config/opencore_dynamic/Android_opencore_download.mk
32+
include $(PV_TOP)/build_config/opencore_dynamic/Android_opencore_rtspreg.mk
33+
include $(PV_TOP)/build_config/opencore_dynamic/Android_opencore_rtsp.mk
34+
include $(PV_TOP)/build_config/opencore_dynamic/Android_opencore_mp4localreg.mk
35+
include $(PV_TOP)/build_config/opencore_dynamic/Android_opencore_mp4local.mk
36+
ifeq ($(BUILD_PV_TEST_APPS),1)
37+
include $(PV_TOP)/oscl/unit_test/Android.mk
38+
include $(PV_TOP)/engines/player/test/Android.mk
39+
include $(PV_TOP)/engines/author/test/Android.mk
40+
include $(PV_TOP)/engines/2way/test/Android.mk
1341
endif
1442

15-
include $(PV_TOP)/pvcommon/Android.mk
16-
include $(PV_TOP)/pvplayer/Android.mk
17-
include $(PV_TOP)/pvauthor/Android.mk
18-
include $(PV_TOP)//baselibs/gen_data_structures/Android.mk
19-
include $(PV_TOP)//protocols/rtp/Android.mk
20-
include $(PV_TOP)//protocols/sdp/parser/Android.mk
21-
include $(PV_TOP)//protocols/rtp_payload_parser/Android.mk
22-
include $(PV_TOP)//protocols/rtsp_parcom/Android.mk
23-
include $(PV_TOP)//protocols/rtsp_client_engine/Android.mk
24-
include $(PV_TOP)//protocols/http_parcom/Android.mk
25-
include $(PV_TOP)//nodes/pvsocketnode/Android.mk
26-
include $(PV_TOP)//nodes/pvdownloadmanagernode/Android.mk
27-
include $(PV_TOP)//nodes/pvprotocolenginenode/Android.mk
28-
include $(PV_TOP)//nodes/streaming/jitterbuffernode/Android.mk
29-
include $(PV_TOP)//nodes/streaming/medialayernode/Android.mk
30-
include $(PV_TOP)//nodes/streaming/streamingmanager/Android.mk
31-
include $(PV_TOP)//pvmi/recognizer/plugins/pvmp4ffrecognizer/Android.mk
32-
include $(PV_TOP)//codecs_v2/video/m4v_h263/dec/Android.mk
33-
include $(PV_TOP)//nodes/pvmp4ffparsernode/Android.mk
34-
include $(PV_TOP)//codecs_v2/omx/omx_m4v/Android.mk
35-
include $(PV_TOP)//codecs_v2/audio/sbc/enc/Android.mk
36-
#include $(PV_TOP)//engines/player/sample_app/Android.mk
37-
#include $(PV_TOP)//engines/player/test/Android.mk
38-
#include $(PV_TOP)//engines/adapters/player/framemetadatautility/test/Android.mk
39-
#include $(PV_TOP)//engines/author/test/Android.mk
4043
endif

Android_platform_extras.mk

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
LOCAL_SHARED_LIBRARIES := libutils libcutils libui libhardware libandroid_runtime libdrm1 libmedia libsgl libvorbisidec libsonivox liblog libicuuc

Android_system_extras.mk

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
LOCAL_LDLIBS := -lpthread
3+
4+
ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true)
5+
LOCAL_LDLIBS += -ldl
6+
endif
7+
ifneq ($(TARGET_SIMULATOR),true)
8+
LOCAL_SHARED_LIBRARIES += libdl
9+
endif

ChangeLog

+242
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,242 @@
1+
===============================================================================
2+
2009-03-10 OpenCORE 2.02
3+
4+
********
5+
There is minor version number nomenclature change where the
6+
minor version is now two digits. So the previous releases
7+
in the new nomenclature are 2.00 (2.0) and 2.01 (2.1). The
8+
new release is 2.02, which is a minor version increment beyond
9+
the previous release.
10+
********
11+
12+
New Features
13+
- AMR-WB support added to the OMX encoder node so that it can utilize
14+
an OMX AMR-WB encoder component if it is part of the OMX core.
15+
- Buffer allocator mechanism allowing the Media I/O components to
16+
supply buffers to the OMX decoders. This method is especially useful
17+
as an alternative way to allocate video buffers. Details can be
18+
found in the new document "Guide to Supplying Decoder Buffers from
19+
the MIO Component" in the file mio_decoder_buffer_allocation_guide.pdf
20+
in the top-level doc directory.
21+
22+
Improvements
23+
- Resolution of Valgrind and static analysis warnings in player and author
24+
- Improvements in support for .mov files in MP4 FF Parser(relaxed some checks).
25+
- Modified OMX encoder node to allow setting the AMR bitrate
26+
based on an extension interface value.
27+
- Fix inconsistencies in OSCL find method related to inclusion of the
28+
directory name with the filename.
29+
- Improvement in PVMFInfoErrorHandlingComplete in the player datapath
30+
- Refactor of the Protocol Engine node to support a plugin architecture.
31+
This improves extensibility of the module for new features in the future.
32+
- Introduce QueryInterfaceSync in PVMFNodeInterface and "all" metadata key
33+
- AMR NB and WB have conflicting meaning for frame_type and mode elements
34+
- Change the default settings related to caching for Oscl_File when
35+
using PVFile within the fileformat parsers.
36+
- Replace test.mp4 with interop clip
37+
- Update of tests for support for progressive download of AMR
38+
- OMX Khronos header files (Omx_Core.h, Omx_Component.h) capitalization
39+
changed to match that from the Khronos (previously they were all lowercase).
40+
- Updated MIO Developer's Guide in the top-level doc directory.
41+
42+
Bugs Fixed
43+
- Memory leak when running GCF TC212 (2way-related)
44+
- MediaClockConverter divided by zero caused by timescale 0
45+
- MP4 composer node destructor memory corruption fixed.
46+
- Fix for intermittent crash in player engine TC 105
47+
- OMX dec node did not reset all the internal state during
48+
Reset processing.
49+
50+
===============================================================================
51+
2009-02-26 OpenCORE 2.1 (2.01)
52+
53+
New Features
54+
* OpenMAX Codec-related:
55+
- Introduced the OMXConfigParser API to help in determining
56+
which OpenMAX components can support the input bitstream.
57+
It is used to narrow the list of candidate OpenMAX components
58+
to be used for playback. See the OpenMAX Core Integration Guide
59+
document in the doc directory for more information.
60+
- Added OMX AAC encoder support in the OMX encoder.
61+
- Modified to use separate component roles for AMR-NB and AMR-WB as
62+
described in the OpenMAX IL spec version 1.1.2.
63+
- Added support for a new buffer format for H.264/AVC decode and
64+
encode to allow passing multiple NALs in a single buffer.
65+
The format uses OMX_OTHER_EXTRADATA structure defined in
66+
section 4.2.33 of the OpenMAX IL spec version 1.1.2 to pass
67+
NAL lengths. See the OpenMAX Core Integration Guide document
68+
in the doc directory for more information.
69+
* Author-related:
70+
- Added support for authoring files with AAC audio.
71+
- Added support for authoring AMR-WB audio to MP4/3GP files and
72+
IETF storage format.
73+
- Added support for writing to an open file descriptor as an option
74+
instead of simply providing a filename. The file descriptor
75+
option is useful for cases where another process needs to open
76+
the file because of permissions.
77+
* Added large file support in OSCL (i.e., 64-bit file size/offset
78+
support) to handle files greater than 2 GiB on filesystems that
79+
support it.
80+
* Added rotation support in the 32-bit color-conversion class.
81+
82+
Improvements
83+
* Removed dynamically loaded modules from the prelink map to avoid
84+
clutter and to make both the prelink map and loadable modules
85+
easier to manage. There may be an issue if a single instance of
86+
a process tries to load libraries not in the prelink map more than
87+
256 times
88+
(See http://code.google.com/p/android/issues/detail?id=2042).
89+
* Update to the MP3 Decoder to fix security issue (oCERT_2009-002,
90+
CVE-2009-0475)
91+
* Renamed the OSCL config directory linux_nj to android to match the
92+
platform name. Replaced all references of nj with android in the
93+
codebase.
94+
* General security improvements found from static analysis in the
95+
following areas:
96+
- Buffer and type overruns and underruns
97+
- Null pointer references
98+
* Refactored the jitter buffer node into a more modular architecture
99+
for better support of different streaming use-cases and protocols.
100+
* Fixed an issue in the MP3 decoder when decoding for very of long
101+
durations (over 2 GiB of data).
102+
* General improvements found during 3GPP packet-switched streaming
103+
interoperability testing.
104+
* General improvements and resolution of issues found from module
105+
level and engine (player, author, 2-way) level unit testing.
106+
107+
New APIs / Behaviors
108+
* Added support in the player engine to cancel a single pending
109+
command using the CancelCommand API. See the player engine API
110+
document for details.
111+
* Renumbered the author test cases to avoid issues with
112+
preprocessor conditionals changing the test numbers based on
113+
settings. Now the test numbers shouldn't change.
114+
* In the case of 3rd party OMX components that support multiple roles,
115+
returns an error if the component cannot set the role parameter
116+
* OMX components need to explicitly set nPortIndex parameter for
117+
all appropriate parameters
118+
* Added fix for buffering percentage notification in streaming
119+
scenario (see https://review.source.android.com/Gerrit#change,8699)
120+
* Updated omx shared library build configuration to separate component
121+
registration from component build
122+
* Added methods in baselibs to serialize and deserialize the UTF-16,
123+
UTF-16LE, UTF-16BE strings
124+
* Removed the iUseCPMPluginRegistry flag from the source data that was
125+
previously used to enable the content policy manager.
126+
Since the CPM pluginsare dynamically loaded, the flag is not
127+
needed and was removed. See the playerdriver.cpp for details
128+
of the change.
129+
130+
===============================================================================
131+
2009-01-26 OpenCORE 2.0 (2.00)
132+
133+
New Features
134+
- Consolidation of the clock logic into a common clock object
135+
(PVMFMediaClock). More details will be provided in a
136+
Tech note at a later time.
137+
- Refactor MP4 Composer library
138+
- omx component refactoring (Introducing base omx component class)
139+
- OMX Encoder Support
140+
- Check URIs for illegal characters and run escaping algorithm if any
141+
are found.
142+
- Support for 3GPP AssetInfo Metadata in Author SDK
143+
- MP3 Dynamic TOC Construction
144+
- Modify MPEG4/H.263 node/library to support arbitrary Decoder
145+
Configuration Information (DCI)
146+
- backward playback support for MP4
147+
- Refactoring Colorconversion from mpeg4 encoder and adding support
148+
for YUV420SemiPlanar
149+
- Refactor streaming manager node into feature specifc plugins
150+
- Thread Safe Player Engine APIs and Thread Safe queue
151+
- Adding capability to turn off AC prediction and change
152+
IntraDCVlcThreshold for MPEG4 encoder library
153+
- Dynamically populate recognizer registry
154+
- add 2way support for OpenCORE
155+
- Combine OMX audio dec node and Video Dec node
156+
- OMX MasterCore
157+
- Apply new RGB to YUV color conversion libraries to OMX encoder
158+
components
159+
- Use loadable modules in CPM
160+
- Adding support for YUV420Semiplanar to avc encoder, m4v encoder and
161+
author
162+
- introduce dynamic loading of individual omx components
163+
164+
Improvements
165+
- Removal of all compiler warnings reported by Android compiler
166+
Exception: unit test app code
167+
- Module-level unit test fixes
168+
- Various Valgrind errors and fixes
169+
- Various Codesonar warnings and fixes
170+
- various security audit and fixes
171+
- various memory leak fixes
172+
- various crash, hang fixes for specific test content or test cases
173+
- Re-work Oscl Scheduler semaphore & lock
174+
- Author Engine Error Handling Robustness
175+
- Player Engine Error Handling Robustness
176+
- Add capability of assembling partial frames and inserting NAL start
177+
codes to OMX node
178+
- The media I/O component configuration process needs to be improved.
179+
- Fundamental change in behavior of repositioning during 3GPP
180+
streaming
181+
- Improvements to the PV FrameMetadataUtility [FMU]
182+
- mp3 parser - duration calculation by walking file in background
183+
- IOT merges from 2-way team
184+
- Longevity issues with live streaming
185+
- Local Playback MP3 file does not display attached art work
186+
- Issues with Oscl Leave, Panic, and Assert
187+
- Modify allocators to not leave in case of an alloc failure, but
188+
instead have them return OsclErrNoMemory
189+
- Conversion of strcmp and strstr usage to strncmp for non null
190+
terminated Strings
191+
- Change Oscl memory auditing from TLS-based to Singleton-based
192+
- Buffer status report in a periodical manner to improve the app
193+
awareness about how engine is running in low bandwidth for PDL/PS
194+
- AVC Encoder Improved Rate Control
195+
- State Transition: Remove implicit ThreadLogoff() from Nodes
196+
- Include aac recognizer for Android
197+
- Audit MP4 parser against new iTunes spec
198+
- Replace PVMFSMSharedBufferAllocWithReSize allocator with
199+
OsclMemPoolResizableAllocator
200+
- Player Engine registry re-work
201+
202+
New KVPs / APIs / API behaviors
203+
- Change Download Manager Stop Command to Stop Download
204+
- Add a KVP to configure jitter buffer inactivity run time from the
205+
app
206+
- OSCL Critical Error Handling
207+
- Adding kvp in SM node to set rtsp_timeout timer in rtsp engine node
208+
- Get rid of "getTrackOTIType" API in parser lib and switch mp4 parser
209+
node to use "getTrackMIMEType".
210+
- Adding capability to turn off AC prediction and change
211+
IntraDCVlcThreshold for MPEG4 encoder library
212+
- Deprecate PVMFCPMPluginLocalSyncAccessInterface
213+
- Introduce new API in Engine to Release MetaData Values
214+
- Use of PVMF format types in player registries
215+
- Introduce new kvp key to set jitter buffer size
216+
- Add a new meta data key to Mp3ParserNode to support channel mode
217+
retrieval
218+
- Support for taking in video bitrate and other params from a config
219+
file, for uncompressed AVI test cases.
220+
- Deprecate TLS-based memory audit
221+
- Use KVP "nodedataqueuing_timeout" instead of compile time tuneable
222+
"SYNC_POINT_DIFF_THRESHOLD"
223+
- Please apply "mode=" for "x-pvmf/net/user-agent;valtype=char*" key.
224+
- Change libpv*.so to libopencore_*.so
225+
- Singleton and lock/unlock mechanism needed for OMX master core
226+
globals
227+
- In case of 3rd party OMX components that support multiple roles -
228+
input dec format and output enc format needs to be specified
229+
- OMX Core plugin code (for 3rd party omx cores integration)
230+
231+
Known Issues
232+
- Had to temporarily remove the doc directory because of conflicts
233+
with Gerrit and PDF files. These will be uploaded again now that
234+
Gerrit is updated.
235+
- Additional documentation will be released as soon as possible.
236+
- The OpenMAX encoder node is configuring the OpenMAX component with
237+
the wrong format for AMR. It is using
238+
OMX_AUDIO_AMRFrameFormatRTPPayload when it should be
239+
OMX_AUDIO_AMRFrameFormatFSF.
240+
- The OpenMAX encoder node is not handling Reset correctly in all
241+
cases.
242+

Config.mk

+23-16
Original file line numberDiff line numberDiff line change
@@ -3,47 +3,54 @@ ifndef EXTERNAL_OPENCORE_CONFIG_ONCE
33
EXTERNAL_OPENCORE_CONFIG_ONCE := true
44

55
PV_TOP := $(my-dir)
6-
PV_CFLAGS := -Wno-non-virtual-dtor -DENABLE_SHAREDFD_PLAYBACK
7-
FORMAT := nj
6+
PV_CFLAGS := -Wno-non-virtual-dtor -DENABLE_SHAREDFD_PLAYBACK -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DUSE_CML2_CONFIG
7+
FORMAT := android
8+
9+
ifeq ($(ENABLE_PV_LOGGING),1)
10+
PV_CFLAGS += -DPVLOGGER_INST_LEVEL=5
11+
endif
12+
13+
ifeq ($(TARGET_ARCH),arm)
14+
PV_CFLAGS += -DPV_ARM_GCC_V5
15+
endif
816

917
# HAS_OSCL_LIB_SUPPORT turns on PV's OSCL dynamic loader.
1018
# Set PV_OSCL_LIB to true to enable it (default in release mode).
11-
# To enable the value added modules, HAS_OSCL_LIB_SUPPORT must be true.
12-
#
1319
# However for debugging with gdb you may want to set PV_OSCL_LIB to
1420
# false to disable this custom loader.
1521
PV_OSCL_LIB := true
1622
ifeq ($(PV_OSCL_LIB), true)
1723
PV_CFLAGS += -DHAS_OSCL_LIB_SUPPORT
1824
endif
1925

20-
# To enable the windows codecs under vendor/pv, define VALUE_ADD to true.
21-
# You need HAS_OSCL_LIB_SUPPORT as well for VALUE_ADD modules.
22-
# Some partners do not get vendor/pv in their distribution. If not present
23-
# VALUE_ADD will be set to false.
24-
ifeq ($(findstring pvplayer.conf, $(wildcard $(TOPDIR)vendor/pv/pvplayer.conf)), )
25-
VALUE_ADD := false
26-
else
27-
VALUE_ADD := true
28-
PV_CFLAGS += -DPV_USE_VALUE_ADD=1
29-
endif
26+
include $(CLEAR_VARS)
3027

3128
PV_COPY_HEADERS_TO := libpv
3229

30+
alternate_config := $(if $(wildcard vendor/pv/pvplayer.cfg),true)
31+
ifeq ($(alternate_config), true)
32+
VALUE_ADD := 1
33+
PV_CFLAGS += -DPV_USE_VALUE_ADD=1
34+
else
35+
VALUE_ADD :=
36+
endif
37+
alternate_config :=
38+
3339
PV_INCLUDES := \
3440
$(PV_TOP)/android \
3541
$(PV_TOP)/extern_libs_v2/khronos/openmax/include \
3642
$(PV_TOP)/engines/common/include \
37-
$(PV_TOP)/engines/player/config/linux_nj \
43+
$(PV_TOP)/engines/player/config/core \
3844
$(PV_TOP)/engines/player/include \
3945
$(PV_TOP)/nodes/pvmediaoutputnode/include \
4046
$(PV_TOP)/nodes/pvdownloadmanagernode/config/opencore \
4147
$(PV_TOP)/pvmi/pvmf/include \
4248
$(PV_TOP)/fileformats/mp4/parser/config/opencore \
43-
$(PV_TOP)/oscl/oscl/config/linux_nj \
49+
$(PV_TOP)/oscl/oscl/config/android \
4450
$(PV_TOP)/oscl/oscl/config/shared \
4551
$(PV_TOP)/engines/author/include \
4652
$(PV_TOP)/android/drm/oma1/src \
53+
$(PV_TOP)/build_config/opencore_dynamic \
4754
$(TARGET_OUT_HEADERS)/$(PV_COPY_HEADERS_TO)
4855

4956
# Stash these values for the next includer of this file.

0 commit comments

Comments
 (0)