OSDN Git Service

RIO-7350: Modify the AMR Enc OMX component to take timestamp from the OMX client...
[android-x86/external-opencore.git] / ChangeLog
1 ===============================================================================
2 2009-12-08  OpenCORE 2.07
3
4 New Features
5 - Support 3GPP fast content switch
6 - Player engine changes and new interfaces for gapless playback
7 - Player unit test additions
8 - Add KVP mechanism to set max/min UDP port number
9 - Support PE node feature selection for static builds
10 - SetFSIParam( ) extension interface is implemented. It was previously stubbed 
11 out. FSI (VOL header or SPS/PPS) is sent to the encoder as preferred encoding 
12 parameters.
13 - Introduce ASM and condition support for arm in tool generated project files.
14 - GetActualAACConfig - add mime type as input to process properly RFC 3016 type 
15 streams
16 - Updates to player engine and media output node for gapless playback
17 - Implement support for I-frame request in OMX encoder node
18 - Add support for AAC Dual Mono
19 - Add a new KVP to control audio output in trickplay mode.
20 - CPM changes and new player engine unit test cases.
21 - Add Track ID as input parameter to the addTrack mp4 composer API
22
23 Improvements
24 - Added pvlogger_empty_layout.h as an optional logger output string format that 
25 appends nothing to the output string.
26 - Code cleanup in MP4 decoder vop code 
27 - AAC lib - improve ADTS searching capabilities - needed for applications not 
28 using aac parser
29 - Change to use audio output buffer size calculation to be based on time as in 
30 the OMX audio dec node rather than based on a fixed number of samples as in the 
31 OMX components default.
32 - Handle more non-standard OMX component state transition errors
33 - Removal of 2way VideoParser Node
34 - Update MediaIONodeRepositionDuringPreparedTest test case to run till EOS
35 - Improve FillBufferDoneProcessing and ParseAVCFullFrameIntoNALs in OMX encoder 
36 nodes
37 - Add support for linking against eclair-specific libraries
38 - Adding a new api to turn silence insertion logic on or off (engine->omx 
39 decoder node->omx audio component).
40 - Introduce -Wno-psabi into android makefiles
41 - Modify logging in PVME Test so that it's consistent with the other logging
42 - Cleanup in the android folder (logging, whitespace, etc)
43 - Changes in android folder to sync-up with eclair changes
44 - Removed unused code oscl_mempool_allocator.h/.cpp
45 - Include pvlogger library in oscl build
46 - Updating run_ae_test make target for logging
47 - Minor bug fix to support movie fragments MP4 files with empty sample 
48 description tables and common PE Node code refactoring
49
50 Bugs Fixed
51 - Video and timer gets stuck on repositioning while the audio continues
52 - A/V Sync Issue on Simple playback and timer goes beyond the limit with Video 
53 playback only (Audio Stops)
54 - Fix for redundant rule to copy getactualaacconfig.h
55 - MP4 file parser and parser node modified to support a very large value of 
56 timescale
57 - Improvements in AAC file parser for ADTS recognition
58 - Code cleanup in pvmf_node_interface
59 - Failures in Java-based mediaframework unit test cases.
60 - Fix for failure on resumption from long pauses during RTSP streaming.
61 - Remove an extra call of ResetData from ThreadLogoff in AndroidSurfaceOutput
62 - Mp4 composer node File writer hang issue
63 - Typo in the OMX node log statements
64 - Uninitialized variable iPlayElementIndex of structure PVPPlaybackPosition 
65 causing repositioning problems
66 - In AAC and AMR parser nodes, UsageComplete should be called only when the 
67 content is protected
68 - MP4 parser node returning the same command twice
69 - Hang in Player engine when cancel called in prepare
70 - Use clock_gettime(MONOTONIC) instead of gettimeofday() on linux platform to 
71 have a consistent clock
72 - In PVPlayerEngine::DoVerifyAndSetPlayerParameter, hard-coded enum value is 
73 wrong
74 - OMX encoder node bug in processing SPS PPS for components that produce NAL 
75 start codes
76 - Classes with virtual methods should have virtual destructors too
77 - Fix for crash in AAC Decoder unit test app
78 - Map key 'track-info/track-number' to 'tracknumber' for Android MediaScanner 
79 to recognize the key.
80 - MP3 FF parser should not pass the Xing/LAME header frame to dec node
81 - AMR file parser improvements
82 - Removed parsing support for WMF AMR tracks from MP4 file parser.
83 - Improvements in OMX test application
84 - Fix crash in 2way stack unit test
85 - Change in oscl statfs to accomodate blank paths
86 - Add Error handling at buffer memory allocation error
87 - Fix rebuffering after PVMFInfoBufferingComplete at mp4 PPB
88 - AVC configuration modifications
89 - Using sample duration in addition to timestamp for syncronization
90 - FMU video MIO does not set video subformat type correctly
91 - Fix uninitialized memory in 2way engine unit tests
92 - Updated PVPlayerEngine::ReleaseMetadataValues to properly handle clip index 
93 argument
94 - Fix for running a test number multiple times in makefile target for running
95 parallel player engine tests
96 - OMX Encoder node returns failure if OMX components returns Failure for 
97 "OMX_IndexConfigCommonRotate" parameter
98 - Remove tests not applicable for OpenCORE
99 - MediaScanner has some API calls which are missing the interface
100 - Cap lower bound player engine watchdog timer duration to default value
101 - Enable File-writer for Mp4 composer node
102 - Early and Late Sync Margins changed for better AV Sync
103
104
105 ===============================================================================
106 2009-11-08  OpenCORE 2.06
107
108 New Features
109 - Add support for the PLS playlist file format for use with Shoutcast
110 - Adding code to benchmark encoding/decoding operation in the OMX component
111 - Add support for junit-like XML log output to test framework
112 - AAC utility getaacaudioinfo - add support for adts clips parsing
113 - Add support in playerdriver for RTSP streaming based on an input SDP file.
114 - Player engine unit test needs to support a list of test case ranges
115 - Add support for authoring btrt atom in mp4 composer to record bitrate 
116 information.
117 - Unit test logger option unification
118 - Add SetDuration capability and new command status code in the base node
119 - Add build macro for turning compiler warnings into errors in Android.mk files
120 - New color conversion library suite for YUV420 to YUV422 conversion; supports 
121 basic conversion as well as 90 and 270 degree rotation
122 - Add communication between OMXEncNode and Composer node for MaxBitRate and 
123 DecodingBufferDB
124 - Support PVMF_MIME_H264_RAW where decoder config info is not always available 
125 before the actual decoding start
126 - Support for YUV422 to OMX encoder components (M4V and AVC)
127 - Enable track selection helper to choose the OMX component used for each track
128 - Changes in PlayerEngine, FMU, and source nodes to allow retrieval of 
129 thumbnails for protected content 
130 - Gapless audio support at the file format and source node level
131
132 Improvements
133 - Change the default behavior of the local makefiles to flag compiler warnings
134 as errors and provide a new flag to disable it
135 - AMR-NB modifications from AOSP
136 https://review.source.android.com/10904
137 https://review.source.android.com/10905
138 https://review.source.android.com/10906
139 - Eliminate memcopies of output buffers in omx components (where possible)
140 - Move helper functions ( MoveCmdToCurrentQueue and MoveCmdToCancelQueue ) to 
141 base node
142 - Add logic to the OMX encoder to choose another component if one fails
143 - Update the logic in the encoder node when choosing an OMX encoder
144 - Track selection metadata ("track-info/selected") needs to be added in AAC/AMR
145  and MP3 nodes
146 - Code size reduction
147 - Ignore pause and seek for live streaming
148 - New player engine test content
149 - Add API to 2Way engine to support selection of codecs and their preference 
150 order
151 - Port OMXBaseNode, OMXVideoNode and OMXAudioNode to new Node Interface
152 - Build system support for ARM_GCC_V4 from AOSP
153 https://review.source.android.com/9668
154 - Add ID3V2 metadata support in mp4 parser libary defined by 3GPP Rel 7. Move 
155 all metadata related operations from MP4 PN to library
156 - Variable _mp4ErrorCode to UNSUPPORTED_FILE_TYPE for any brand type in 
157 mpeg4file.cpp should not be set
158 - Encoder nodes should be added only for uncompressed MIO in 2way engine
159 - PV OMX component returns invalid supported profile/level pair
160 - Removing memory leaks in MDBS
161 - Create Generic 2Way Pause/Resume unit test
162 - Add insert_element() and clear() methods to OSCL linked list 
163 - Update Player developers guide for CancelCommand and CancelAllCommands error 
164 return values
165 - Remove a check in sliding_window_process to make avc decoder tolerate an 
166 error condition and continue decoding 
167 - Remove YUV buffer alignment calculations from the OMX decoder node. This is 
168 currently done in the OMX components
169 - Add the ability to report info and error events from the author MIOs 
170 - Modifying current command queue and cancel command queue to a single command 
171 in the base node
172 - Refactor RTSP client engine node for cleaner interfacing with streaming 
173 manager node
174 - Adding support for configuring the number of output buffers as a part of 
175 dynamic port reconfiguration in omx test app
176 - Refactor MP3FFParserNode to use the base node implementation
177 - Refactor DownloadManager Node to use the base node implementation
178 - Refactor MP4 FF Parser Node to use the base node implementation
179 - Add CallNativeSetSize() API for OSCL File 
180 - Change H.263 encoding default GOB header interval to 0 
181
182 Bugs Fixed
183 - Track IDs are huge in particular mp4 clip causing crash
184 - Source node's handling of CPM cmds in Reset is incorrect
185 - [PDL] Download resume doesn't work if server response doesn't include the 
186 Content-Length header.
187 - Android_camera_input.cpp method statusUpdate returns unhandled exception
188 - Hardcoded values in mp4a atom in the composer. (2030968)
189 - Download manager node uses shoutcast support by default
190 - atom 'meta' is not skipped 
191 - Video playback is distorted (not normal) during playback for somes clips
192 - Need the ability to disable CPM in source nodes
193 - Crash in OsclTimer 
194 - Nodes getting schedule extra number of times
195 - Update Android MIO to use authoring clock to achieve better AV sync in 
196 encoding 
197 - Implementation of trick play support
198 - Modify player engine's QueryInterface implementation
199 - Not able to play InValidId3Tags.mp3 content
200 - Fixes for building OpenCORE on android-x86
201 - Streaming Manager node modification to make feature specific plugins 
202 dynamically loadable
203 - Memory leak in video telephony engine
204 - OsclMemPoolResizableAllocator has been modified to take into account the 
205 size specified via setMaxSzForNewMemPoolBuffer while expanding the mempool
206 - OMX AMR component fixed to support 3 Role strings properly
207 - Crash in video telephony engine
208 - PVAuthor Developer's Guide has been updated to clarify 3GP vs MP4 file 
209 authoring
210 - RTSP amr-nb streaming can not start playback, need to seek then playback 
211 start
212 - Fix the issues in Table of Contents implementation in Mp3 Parser
213 - Hang in one accepted/negotiated format 2way engine unit test
214 - Fix a problem where a node based on the base node implementation was not 
215 getting resheduled to process the next command when multiple commands 
216 (RequestPort in this case) were queued. 
217 - PVMFRecognizer improvements, including multi-pass recognition etc.
218 - Send correct YUV format to the VMIO instead of PVMF_MIME_FORMAT_UNKNOWN
219 - By default, use current system time as creation & modification date in MP4 
220 composer node
221 - Audio issue in RTSP streaming caused by AMR decoder problem.
222 - Fix an issue where PVPlayerEngine::Prepare() never completes. If server 
223 sends OPTIONS request to the PVPlayer, PVPlayer does not send SETUP request 
224 to the server and PVPlayerEngine::Prepare() never completes
225 - Fix for reading from files using a file descriptor with an non-zero offset
226 - Fix potential crash during streaming session with multiple frames per packet 
227 - Minor refactoring of integer datatype use
228 - Fix issue where an incorrect VOL header for MPEG4 video content results in 
229 no video playback
230 - Add an extra condition for the multi-line check in an HTTP response header
231 - Move inlined code from header to cpp file for pvmf_event_handling 
232 - Update the omx decoder node to reject a component if 
233 iOMXComponentUsesFullAVCFrames is false
234 - Crash in video telephony engine cleanup
235 - Report a more appropriate failure status via the author engine when 
236 underlying node commands fails
237 - Fix the fileoutput MIO to take into account the 422 UYVY format
238 - Fix for opening shared asset file handles multiple times
239 - Fileformat parser changes to support some specific mp4 content
240 - Limit the max size of album art to 3MB
241 - Changes in sending the Buffering Status
242 - Adding support for authoring moof clips for live sessions in mp4 composer 
243 library
244 - PVPlayer crashes when trying to do Progressive Streaming of a specific 
245 MP4 Clip
246 - Incorrect mime string comparision in pv2way datapath
247 - Fix for memory leak in mp4 local playback at GetMetaDataValue
248 - Implement HandleExtensionAPICommands for OMXDecNode
249 - Change OMX enc node Reset() to return success even OMX comp GetState() 
250 fails or returns bad states
251 - Treat OMX_EventError with OMX_ErrorInvalidState as if OMX client get an 
252 OMX_EventCmdComplete indicating state transition failure
253 - Add CTOR in RepositionRequestStruct to init the members 
254 - Fix for testcase 805 with local content
255 - Logging in PVME Test not working properly for threaded mode
256 - Thumbnail extraction when no sample present in stss atom
257 - MP3 frames may have different sampling rate or number of channels. So, 
258 in the omx mp3 component, logic has been added to ensure that only decoding of 
259 consistent frames is sent as output and silence will replace mismatched frames
260 - Content truncated while seeking specific YouTube clip
261 - Player Engine should not fail playback if the Source node does not support 
262 Playback control interface
263 - Cleanup test input and output filenames used in 2way tests
264 - Error in video display while playing minimum size content (48*48)
265 - Valgrind error fixes
266 - Fix a bug in SPS length calculation
267 - PVME doesn't retrieve metadata properly if file has an invalid extension
268 - Wrong sequence numbers from video parser node
269 - Using RTCP SR reports to perform AV sync once, if server does not provide 
270 rtp-info in PLAY response. 
271 - Mp3 parsernode should pass source context to CPM plugins 
272
273
274 ===============================================================================
275 2009-08-06  OpenCORE 2.05
276
277 New Features
278 - Helper function to retrieve extended messages from command responses.
279 - Support for eAAC+ encode in the pvAuthor engine.
280 - Add conversion operations to OSCL_String classes.
281 - RTSPT support (3GPP streaming over TCP). To test, replace "rtsp" with "rtspt"
282 in the control URL (in source URL or SDP file). It is assumed that the user has
283 access to a server with TCP streaming capability.
284 - PV Metadata Engine (ME). This engine is targeted at applications that want
285 to retrieve metadata for any given clip in a generic manner. Typically, a lot
286 of these applications would like to scan large batches of content. Since ME 
287 is mainly targeted at apps like mediascanner, where speed is the most important
288 factor, thumbnail extraction is not supported. For applications that do want 
289 to extract thumbnails in a generic manner along with the metadata, PV's 
290 FrameAndMetadata Utility (FMU) is recommended instead.
291 - 2way Lip-Sync unit test cases.
292
293 Improvements
294 - A new base node implementation is introduced for the purpose of 
295   refactoring and consolidating common logic in the nodes. The changes
296   will improve maintainability and make it easier to create new nodes.
297   Further documentation will be released in the future providing guidelines
298   for authoring nodes.
299 - The following existing nodes were refactored to utilize the base node 
300   implementation mentioned above: AAC, AMR, and WAV parser nodes.
301 - Replace CodecSpecifier with PVMFFormatType.
302 - Move EventHandlerProcessing method to PVMFOMXBaseDecNode class.
303 - Change method type from "protected" to "private" in OMX derived classes
304 (videodec node and audiodec node).
305 - Adding robustness to avcdecoder to verify PPS and SPS parameters.
306 - Display status of every test case after it finishes in 2way unit test app.
307 - Add support to H.245 version 10.
308 - OMX node - Implement interleaved NAL sizes (to replace NAL start codes) in 
309 omx buffers carrying AVC frames.
310 - AMR-WB contributions to enable building in "C":
311 https://review.source.android.com/10014 
312 https://review.source.android.com/10015
313 https://review.source.android.com/10016 
314 https://review.source.android.com/10017 
315 https://review.source.android.com/10018 
316 - AMR-NB contributions to enable building in "C":
317 https://review.source.android.com/10297 
318 https://review.source.android.com/10301 
319 https://review.source.android.com/10302 
320 https://review.source.android.com/10303 
321 - Update OsclFileStats to track total time taken instead of only the 
322 maximum time per operation.
323 - Rename OMX master core methods to avoid linking conflicts.
324 - Pass key MOUT_VIDEO_SUBFORMAT_KEY to the video MIO of FMU.
325 - Remove Direct Render Mode from mp4 composer library. 
326 - AMR-NB and AMR-WB inline assembly is being re-enabled after a bug
327 in the QEMU assembly translation has been fixed.
328 - Modification of MIOs to take all configuration parameters at once.
329 - Move OMX input and output buffer ctrl structure away from data buffers.
330 - Enable byte-stream (H264-RAW) format decoding in OMX dec node.
331 - PVMFInfoTrackDisable information event should be report to java application.
332 - Retrieve the PLATFORM version at run time for the Android UserAgent string.
333 - OMX audio and video dec nodes need to be able to handle PortSettingsChanged
334 event with argument OMX_ALL.
335 - PVMFMediaClock latency handling improvement.
336 - AAC decoder creates artifacts when decoding clip.
337 - Modify MP4 composer node to do sample adds to mp4 composer lib in a separate
338 thread.
339 - Add support for VIDEO_ENCODER_H264 in authordriver.
340 - Author major brand "3gp5" if 3gp clip has TIMED-TEXT track.
341 - No interleaving of mp4 files for just one track.
342 https://review.source.android.com/10510 
343 - Return non-zero code when we detect a memory leak during unit tests.
344 - Add "3g2a", "3g2b" and "3g2c" as compatible branch in all content authored
345 by PvAuthor SDK.
346 - Add support for OMX_COLOR_FormatYCbYCr.
347 - Remove unneeded libraries being linked against individual shared libraries.
348 - Exclude empty directories and unncessary build files from OpenCORE.
349 - In OMX base node, turn the InputBufCtrlStruct from a struct into a class
350 - Updates to pvmf_return_codes.pdf, pvplayer_developers_guide.pdf,
351 omx_decoder_test_app_guide.pdf, and omx_encoder_test_app_guide.pdf.
352
353 Bugs Fixed
354 - Repositioning takes a long time for YouTube videos after a few
355 repositions.
356 - Crash in CPVH223Multiplex::Stop().
357 - PlayerEngine cannot finish a playback session after repeated pause
358 and resume near EndOfStream.
359 - Allow file path to be passed to the pvPlayer SDK on Android.
360 - Add a new constructor for the AVCSampleEntry to be used when parsing the 
361 encv atom
362 https://review.source.android.com/9683
363 - MP3 DurationCalcAO logic needs to moved to a place during Prepare and not 
364 Init.
365 - Change PV_GET_ROW definition in M4V decoder. 
366 - Player Engine unit test TC 55 and 56 has memory leaks
367 - Crash in authordriver if InitializeForThread fails.
368 - Crash in playerdriver if InitializeForThread fails.
369 - Potential memory leak in OMX encoder node.
370 - Memory leaks in AAC file parser node & lib
371 - FindFirst returns wrong element type when find a directory in android
372 - Intermittent timeouts on 2way unit tests
373 - Incorrect DeBlocking logic
374 - AVC Clip Specific Issue: (Play till EOS) OR (Reposition to near EOS) The 
375 video gets stuck at near EOS 
376 - iTunes genre is not parsed correctly
377 - Youtube : AV sync is lost after a seek when playing youtube contents
378 - Crash after recording one minute of Video when duration is specified
379 - Tracknumber metadata key string should be consistent through out all nodes
380 - Possible race condition in singleton lock in omx_init 
381 - CPV2WayDatapath::GetPortFormatType() selects least preferred type 
382 - AAC OMX decoder component needs to process whole audio config buffer
383 - Modify MP3Parser to make seek to 0 a special case and do not use XING header
384 for calculating file offset
385 - AAC Decoder should not try decode any AAC+ clip whose final sampling freq 
386 is > 48 KHz. Should default to AAC in these cases.
387 - Update OMX encoder node to calculate the correct output buffer size in case
388 the encoder has multiple roles.
389 - OMX Encoder MPEG4 unit test fix
390 - Setting AMR_NB bitrate to GSM_AMR_4_75 will fail prepare. 
391 - AuthorEngine should return Success incase Stop is called in
392 PVAE_STATE_INITIALIZED state.
393 - OMX M4V encoding drops the first I-frame
394 - VIDEO_INTERLEAVE_BUFFER_SIZE is too short for some buffers when encoding 
395 D1 resolutions 
396 - Occasional audio glitch in MP3 parser during repositioning
397 - OMX tests for AMR give seg fault on android
398 - pvPlayer sends incorrect HTTP Range header
399 http://code.google.com/p/android/issues/detail?id=3031
400 - PDL/PS - Fix the Mp4 Parser node to pass the correct timestamp to PE node 
401 in RequestResumeNotification during Underflow condition 
402 - H.245 TerminalCapabilitySet (TCS) and MasterSlaveDetermination (MSD) 
403 requests must be sent before any other H.245 messages. 
404 - Logic to set iKeepDroppingMsgsUntilMarkerBit to false in AMR RTSP streaming 
405 - 2way tests hanging when run in Android emulator
406 - Sound Recorder: Incorrect Duration of clip sometimes observed when sdcard is
407 full
408 - Memory leak in PV2WayMIO
409 - Playerengine needs to be updated to return success even if there are no keys
410 for GetMetadataValue
411 - Correct the Android RTSP UserAgent string
412 - Author Engine : Don't access the queue element without checking its queue
413 size
414 - If SSRC is not provided in setup response, then pvplayer cleint doesn't send
415 firewall packets to the server
416 - GetMetadataValues returns invalid number of entries
417 - Modify AUT to parse authored files and validate the files as much as possible
418 - Eliminate media layer node in case of RTSP streaming
419 - AAC timestamps provided to OMX component may be wrong
420 - Clean up warnings and some negotiate parameter changes from omx dec & enc
421 test apps
422 - Fix valgrind issue reported with android simulator in omx base node
423 - Add more supported rate control types in pv_video_encnode_extension.h
424 - Memory leak in player engine test case 807
425 - Addressed compiler warnings in PVME
426 - nBufferAlignment of OMX_PARAM_PORTDEFINITIONTYPE is initialized to negative
427 value when playing clip on android using qcom decoders
428 - MP3 parser crash
429 - pvplayer_engine_test is detecting 'rtspt_test.sdp' as a url instead a local
430 file
431 - Count of command line arguments being read in PVME Test App is incorrect
432 - Player engine test case 1307 fails when run with a mp4 file containing 3GPP 
433 timed text track 
434 - PVMFInfoDataReady event being sent to the engine after the unit test calls
435 stop
436 - PlayerEngine doesn't free reference to PVMFDataSourceNodeRegistryInitInterface
437 - Combine the AMR if statement in pv_omxmastercore.cpp
438 - Player Engine unit test case 154 fails on execution 
439 - Author Engine unit test cases 101-105 fail
440 - Add new return code PVMFErrContentInvalidForProgressivePlayback for a
441 NOT_PROGRESSIVE_STREAMABLE content 
442 - Add USE (AL2, AL3) to 2way test files
443 - H223 2way test not being run 
444 - Avoid calling CCYUV422toYUV420::New() for each thumbnail
445 - Author engine unit test case 101 fails
446 - Ignore encoding flaw, which generates aspec_ratio of value 0 in file
447 codecs_v2\video\m4v_h263\dec\src
448 - Memory leaks in pvmf_mio_fileinput.cpp and performance improvement in mp4
449 composer node
450 - Do not cancel Init() immediately in case of 3gpp streaming 
451 - Transferring MP3 with invalid ID2 tags crashes mediaScanner
452
453
454 ===============================================================================
455 2009-05-17  OpenCORE 2.04
456
457 New Features
458 - Create external download datastream An external download datastream is
459 introduced to allow for an external entity to pass a datastream interface 
460 to the player SDK.  The external entity is responsible for doing the actual 
461 download of the media data.  Full support in Android is not complete until 
462 playerdriver changes and more unit testing is done.
463 - Fixed cache option in Oscl_File
464 Adding an option to configure the Oscl file cache to use one or more fixed
465 caches in addition to the movable cache.
466 - Modify author engine to contain a notion of "authoring clock"
467 Author engine has the option to pass an "authoring clock" to media input
468 components so that they can use this to sync audio and video timestamps.  
469 Author engine has been modified to own a PVMFMediaClock.  Author engine 
470 provides a pointer to its to data source node (media input node typically) 
471 at the end of author engine Init cycle, using PVMF_AUTHORING_CLOCK_KEY.  
472 No media input component changes were done. All media input components 
473 used in author engine unit test currently operate from a file and have no
474 need for such a clock, but some device media input components can make use 
475 of the clock if needed in the future, since author engine will pass the 
476 clock pointer all the time to data sources.
477 - Shoutcast (of MP3) support
478 Shoutcast support of MP3 and internet radio streaming is added.
479 - Enable AAC PDL Support 
480 More robust support of PDL of AAC content, including underflow handling.
481 - Add support for 3GPP2 speech (EVRC, QCELP etc) in MP4 FF library
482 Support for the 3GPP2 speech codecs is added at the file format library
483 level.  No 3GPP2 speech codecs are added.
484 - OpenMAX encoder and decoder unit test suite
485 - Use external filehandle in Android
486 - Introduce new macro to android makefiles to enable 2way
487
488 Improvements
489 - Add support for "all" metadata key in CPM plugins.  This feature provides 
490   a single key to request that all available metadata be returned.
491 - Add support for OMX_ColorFormatCbYCrY 
492 - OMX video dec node now sets the codec parameters (width/height etc.) in the 
493   output port of the omx component.
494 - A loadable module for the OMA1 passthru CPM plugin now exists.  It serves 
495   as an example for creating a loadable CPM plugin.
496 - Compressed testcases have been added in Authior Engine unit tests to 
497   author 3gp file from AVC and M4V and AAC bitstreams
498 - Added checks to verify that the PCM output of the mp3 frame will not exceed
499   the output buffer size, so the mp3 decoder / OMX component is nore robust.
500 - Removed unnecessary "ComponentGetRolesOfComponent" methods from OMX 
501   components.
502 - Restored "/x-pvmf/ff-mux/mp4" MIME Type in Author engine. 
503 - Modified the Initial AVC buffers so that the image that appears initially 
504   is black (not green/pink) if I-frame is missing. 
505 - Fixed the IFrameInterval setting in the OpenMAX video encoder node. 
506 - Added the ability to pass a peer PvmiCapabilityAndConfig interface to 
507   the Media I/O (MIO) components using the Capability Exchange.  The purpose 
508   is to allow the MIO components to set and get parameters (i.e., drive the 
509   process) rather than on relying on the media output node to do it.
510 - Added checks to the OMX components to verify that the buffer size 
511   (in allocate/use buffer) (nAllocLen) is adequate (i.e. >= than nBufferSize)
512 - Updated OMX components so that standard component roles can be queried as 
513   well as set.
514 - AMR-NB common library modified to mark the proper symbol exports and moved
515   some functions to encoder and decoder libraries instead of common. 
516 - Updated h264 decoder to take advantage of the fact that there will be no 
517   in-band SPS/PPS NALs for the mime Video dec node prevents in-band SPS/PPS 
518   for the format PVMF_MIME_H264_VIDEO_MP4
519 - Add macro for enabling build of pv test engine executables in Android 
520 - Remove 12-bit, 24-bit, and 32-bit routines from Android libraries 
521 - Modified OMX timestamps to be in in microseconds rather than milliseconds
522   as specified in the OMX spec 1.1.2.
523 - Improvements and workarounds for non-compliant OMX components
524 - Replace OPEN_FILE_ONCE_PER_TRACK macro with member variable 
525 aOpenFileOncePerTrack in mp4ffparser lib
526 - 2way: send data fragment by fragment from parser side
527 - Added a new function to convert PVMFStatus to human friendly strings
528 - Implement logic to choose correct OMX component when decoding streaming 
529 H264
530 - OMX dec nodes should report error and not even call config parser if 
531 config data is missing (but is required by the format)
532 - Update playerdriver.cpp to send "disable-firewall-packets" KVP key based 
533 on system Android property
534
535 Bugs Fixed
536 - Moov atom is not being written into .3gp file if Author driver does not 
537   close file handle.
538 - omx mp4 component in no-marker-bit mode crashes when playing a certain clip
539 - Error handling incase of input other then 8K AMR 
540 - Add PVReleaseInterface method to OMX shared library interfaces 
541   (components + main)
542 - pull sdcard while recording causes media server to crash 
543 - Changes to buffering status notifications while streaming 
544 - OMX nodes should not send repositioning request to OMX component until 
545   config data has been processed by OMX components 
546 - Crash in the author SDK as part of engine Reset 
547 - If SSRC is not provided in setup response, then pvplayer client doesn't 
548   send firewall packets to the server 
549 - PVAuthorEngineNodeUtility::NodeCommandCompleted does not check whether 
550   iCmdQueue is empty 
551 - AMR Local Playback -> FF to EOS when repeat song is on will cause a force 
552   crash 
553 - some source nodes will put same timestamp for DataTS in old stream id 
554   and DiscardTS
555 - Change pv omx encoder node to default iOMXComponentNeedsNALStartCodes to 
556   false and do sanity check
557 - When reconfig happen,SinkNode should send reconfig notification with 
558   FormatSpecificInfo to MIO 
559 - Race condition - If port settings event and node stop command arrive 
560   simultaneously - omx component may fail port flush command 
561 - Mp3FFParserNode: Memory leak in Duration Calculator 
562 - Playback clock starts even before PlayerEngine Start( ) is issued 
563 - Clip plays beyond EOS.  Fixed setting of the actual normal play time (NPT)
564   when repositioning. 
565 - Modified OSCL and player driver handling of external file handles in the 
566   player.
567 - MP3 PS - Repositioning is not working properly 
568 - MP3 Parser needs to validate consecutive mp3 headers before parsing starts
569 - Crash in MIO component due to setPeer(NULL) is not called 
570 - Improvements and robustness in thumbnail generation from normal and 
571   corrupted clips
572 - Improvements in stability of Author Engine Unit tests when using OMX 
573   encoder node
574 - Modify OSCL Mempool to assert when a buffer is deallocated back to 
575   mempool twice in a row 
576 - Fix a possible race condition in omx proxy threads. 
577 - H263 decoder (OMX version) needs to remove the DEFAULT width-height 
578   initialization 
579 - Oscl file cache assert when reading binary file in text mode 
580 - AAC and MP3 decoders have ARMv4 incorrect defines on normalization routines.
581   (see https://review.source.android.com/Gerrit#change,9668)
582 - AMR component roles do not distinguish between AMR_NB and AMR_WB 
583 - OSCL shared library avoid dlopen() leaking in case of failure(dlsym() fails)
584 - Mp3 Clip hangs for some time when repositioned near to the end
585 - PV_atof will return a value that is larger than it should be if the input 
586 string has a CR at the end
587 - Sequence number rollover in RTP info param during prolonged RTSP streaming
588
589
590 ===============================================================================
591 2009-03-31  OpenCORE 2.03
592
593 Improvements
594 - Enable OpenCORE on master - part 2
595
596 ===============================================================================
597 2009-03-10  OpenCORE 2.02
598
599 ********
600    There is minor version number nomenclature change where the 
601    minor version is now two digits.  So the previous releases 
602    in the new nomenclature are 2.00 (2.0) and 2.01 (2.1).  The 
603    new release is 2.02, which is a minor version increment beyond
604    the previous release.
605 ********
606
607 New Features
608 - AMR-WB support added to the OMX encoder node so that it can utilize 
609   an OMX AMR-WB encoder component if it is part of the OMX core. 
610 - Buffer allocator mechanism allowing the Media I/O components to 
611   supply buffers to the OMX decoders.  This method is especially useful
612   as an alternative way to allocate video buffers.  Details can be 
613   found in the new document "Guide to Supplying Decoder Buffers from 
614   the MIO Component" in the file mio_decoder_buffer_allocation_guide.pdf
615   in the top-level doc directory.
616
617 Improvements
618 - Resolution of Valgrind and static analysis warnings in player and author
619 - Improvements in support for .mov files in MP4 FF Parser(relaxed some checks).
620 - Modified OMX encoder node to allow setting the AMR bitrate 
621   based on an extension interface value.
622 - Fix inconsistencies in OSCL find method related to inclusion of the 
623   directory name with the filename.
624 - Improvement in PVMFInfoErrorHandlingComplete in the player datapath
625 - Refactor of the Protocol Engine node to support a plugin architecture.  
626   This improves extensibility of the module for new features in the future.
627 - Introduce QueryInterfaceSync in PVMFNodeInterface and "all" metadata key
628 - AMR NB and WB have conflicting meaning for frame_type and mode elements
629 - Change the default settings related to caching for Oscl_File when 
630   using PVFile within the fileformat parsers.
631 - Replace test.mp4 with interop clip
632 - Update of tests for support for progressive download of AMR
633 - OMX Khronos header files (Omx_Core.h, Omx_Component.h) capitalization 
634   changed to match that from the Khronos (previously they were all lowercase).
635
636 Bugs Fixed
637 - Memory leak when running GCF TC212 (2way-related)
638 - MediaClockConverter divided by zero caused by timescale 0
639 - MP4 composer node destructor memory corruption fixed.
640 - Fix for intermittent crash in player engine TC 105
641 - OMX dec node did not reset all the internal state during 
642   Reset processing.  
643
644
645 ===============================================================================
646 2009-02-26  OpenCORE 2.1 (2.01)
647
648 New Features
649 * OpenMAX Codec-related:
650   - Introduced the OMXConfigParser API to help in determining
651     which OpenMAX components can support the input bitstream.
652     It is used to narrow the list of candidate OpenMAX components
653     to be used for playback.  See the OpenMAX Core Integration Guide
654     document in the doc directory for more information.
655   - Added OMX AAC encoder support in the OMX encoder.
656   - Modified to use separate component roles for AMR-NB and AMR-WB as
657     described in the OpenMAX IL spec version 1.1.2.
658   - Added support for a new buffer format for H.264/AVC decode and
659     encode to allow passing multiple NALs in a single buffer.  
660     The format uses OMX_OTHER_EXTRADATA structure defined in 
661     section 4.2.33 of the OpenMAX IL spec version 1.1.2 to pass 
662     NAL lengths.  See the OpenMAX Core Integration Guide document 
663     in the doc directory for more information.
664 * Author-related:
665   - Added support for authoring files with AAC audio.
666   - Added support for authoring AMR-WB audio to MP4/3GP files and
667     IETF storage format.
668   - Added support for writing to an open file descriptor as an option
669     instead of simply providing a filename.  The file descriptor
670     option is useful for cases where another process needs to open 
671     the file because of permissions.
672 * Added large file support in OSCL (i.e., 64-bit file size/offset
673     support) to handle files greater than 2 GiB on filesystems that 
674   support it.
675 * Added rotation support in the 32-bit color-conversion class.
676
677 Improvements
678 * Removed dynamically loaded modules from the prelink map to avoid
679   clutter and to make both the prelink map and loadable modules 
680   easier to manage.  There may be an issue if a single instance of 
681   a process tries to load libraries not in the prelink map more than 
682   256 times
683   (See http://code.google.com/p/android/issues/detail?id=2042).
684 * Update to the MP3 Decoder to fix security issue (oCERT_2009-002,
685   CVE-2009-0475)
686 * Renamed the OSCL config directory linux_nj to android to match the
687   platform name.  Replaced all references of nj with android in the 
688   codebase.
689 * General security improvements found from static analysis in the
690   following areas:
691   - Buffer and type overruns and underruns
692   - Null pointer references
693 * Refactored the jitter buffer node into a more modular architecture
694   for better support of different streaming use-cases and protocols.
695 * Fixed an issue in the MP3 decoder when decoding for very of long
696   durations (over 2 GiB of data).
697 * General improvements found during 3GPP packet-switched streaming
698   interoperability testing.
699 * General improvements and resolution of issues found from module
700   level and engine (player, author, 2-way) level unit testing.
701
702 New APIs / Behaviors
703 * Added support in the player engine to cancel a single pending
704   command using the CancelCommand API.  See the player engine API 
705   document for details.
706 * Renumbered the author test cases to avoid issues with
707   preprocessor conditionals changing the test numbers based on 
708   settings.  Now the test numbers shouldn't change.
709 * In the case of 3rd party OMX components that support multiple roles,
710   returns an error if the component cannot set the role parameter
711 * OMX components need to explicitly set nPortIndex parameter for
712   all appropriate parameters
713 * Added fix for buffering percentage notification in streaming
714   scenario (see https://review.source.android.com/Gerrit#change,8699)
715 * Updated omx shared library build configuration to separate component
716   registration from component build
717 * Added methods in baselibs to serialize and deserialize the UTF-16,
718   UTF-16LE, UTF-16BE strings
719 * Removed the iUseCPMPluginRegistry flag from the source data that was
720   previously used to enable the content policy manager.  
721   Since the CPM pluginsare dynamically loaded, the flag is not 
722   needed and was removed.  See the playerdriver.cpp for details
723   of the change. 
724
725
726 ===============================================================================
727 2009-01-26  OpenCORE 2.0 (2.00)
728
729 New Features
730 - Consolidation of the clock logic into a common clock object
731   (PVMFMediaClock).  More details will be provided in a 
732   Tech note at a later time.
733 - Refactor MP4 Composer library
734 - omx component refactoring (Introducing base omx component class)
735 - OMX Encoder Support
736 - Check URIs for illegal characters and run escaping algorithm if any
737   are found.
738 - Support for 3GPP AssetInfo Metadata in Author SDK
739 - MP3 Dynamic TOC Construction
740 - Modify MPEG4/H.263 node/library to support arbitrary Decoder
741   Configuration Information (DCI)
742 - backward playback support for MP4
743 - Refactoring Colorconversion from mpeg4 encoder and adding support
744   for YUV420SemiPlanar
745 - Refactor streaming manager node into feature specifc plugins
746 - Thread Safe Player Engine APIs and Thread Safe queue
747 - Adding capability to turn off AC prediction and change
748   IntraDCVlcThreshold for MPEG4 encoder library
749 - Dynamically populate recognizer registry
750 - add 2way support for OpenCORE
751 - Combine OMX audio dec node and Video Dec node
752 - OMX MasterCore
753 - Apply new RGB to YUV color conversion libraries to OMX encoder
754   components
755 - Use loadable modules in CPM
756 - Adding support for YUV420Semiplanar to avc encoder, m4v encoder and
757   author
758 - introduce dynamic loading of individual omx components
759
760 Improvements
761 - Removal of all compiler warnings reported by Android compiler
762   Exception: unit test app code
763 - Module-level unit test fixes
764 - Various Valgrind errors and fixes
765 - Various Codesonar warnings and fixes
766 - various security audit and fixes
767 - various memory leak fixes
768 - various crash, hang fixes for specific test content or test cases
769 - Re-work Oscl Scheduler semaphore & lock
770 - Author Engine Error Handling Robustness
771 - Player Engine Error Handling Robustness
772 - Add capability of assembling partial frames and inserting NAL start
773   codes to OMX node
774 - The media I/O component configuration process needs to be improved.
775 - Fundamental change in behavior of repositioning during 3GPP
776   streaming
777 - Improvements to the PV FrameMetadataUtility [FMU]
778 - mp3 parser - duration calculation by walking file in background
779 - IOT merges from 2-way team
780 - Longevity issues with live streaming
781 - Local Playback MP3 file does not display attached art work
782 - Issues with Oscl Leave, Panic, and Assert
783 - Modify allocators to not leave in case of an alloc failure, but
784   instead have them return OsclErrNoMemory
785 - Conversion of strcmp and strstr usage to strncmp for non null
786   terminated Strings
787 - Change Oscl memory auditing from TLS-based to Singleton-based
788 - Buffer status report in a periodical manner to improve the app
789   awareness about how engine is running in low bandwidth for PDL/PS
790 - AVC Encoder Improved Rate Control
791 - State Transition: Remove implicit ThreadLogoff() from Nodes
792 - Include aac recognizer for Android
793 - Audit MP4 parser against new iTunes spec
794 - Replace PVMFSMSharedBufferAllocWithReSize allocator with
795   OsclMemPoolResizableAllocator
796 - Player Engine registry re-work
797
798 New KVPs / APIs / API behaviors
799 - Change Download Manager Stop Command to Stop Download
800 - Add a KVP to configure jitter buffer inactivity run time from the
801   app
802 - OSCL Critical Error Handling
803 - Adding kvp in SM node to set rtsp_timeout timer in rtsp engine node
804 - Get rid of "getTrackOTIType" API in parser lib and switch mp4 parser
805   node to use "getTrackMIMEType".
806 - Adding capability to turn off AC prediction and change
807   IntraDCVlcThreshold for MPEG4 encoder library
808 - Deprecate PVMFCPMPluginLocalSyncAccessInterface
809 - Introduce new API in Engine to Release MetaData Values
810 - Use of PVMF format types in player registries
811 - Introduce new kvp key to set jitter buffer size
812 - Add a new meta data key to Mp3ParserNode to support channel mode
813   retrieval
814 - Support for taking in video bitrate and other params from a config
815   file, for uncompressed AVI test cases.
816 - Deprecate TLS-based memory audit
817 - Use KVP "nodedataqueuing_timeout" instead of compile time tuneable
818   "SYNC_POINT_DIFF_THRESHOLD"
819 - Please apply "mode=" for "x-pvmf/net/user-agent;valtype=char*" key.
820 - Change libpv*.so to libopencore_*.so
821 - Singleton and lock/unlock mechanism needed for OMX master core
822   globals
823 - In case of 3rd party OMX components that support multiple roles -
824   input dec format and output enc format needs to be specified
825 - OMX Core plugin code (for 3rd party omx cores integration)
826
827 Known Issues
828 - Had to temporarily remove the doc directory because of conflicts
829   with Gerrit and PDF files. These will be uploaded again now that
830   Gerrit is updated.
831 - Additional documentation will be released as soon as possible.
832 - The OpenMAX encoder node is configuring the OpenMAX component with
833   the wrong format for AMR. It is using
834   OMX_AUDIO_AMRFrameFormatRTPPayload when it should be
835   OMX_AUDIO_AMRFrameFormatFSF.
836 - The OpenMAX encoder node is not handling Reset correctly in all
837   cases.