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 243