blob: cdd706c6b208e9ae1167629adb5340f87246cafb [file] [log] [blame] [view]
David Ghandehari60170302017-03-10 21:18:13 -08001# Starboard Version Changelog
2
3This document records all changes made to the Starboard interface, up to the
4current version, but not including the experimental version. This file will
5be updated each time a new Starboard version is released. Each section in
6this file describes the changes made to the Starboard interface since the
7version previous to it.
8
Yavor Goulishev9c08e842020-04-29 14:03:33 -07009**NOTE: Starboard versions 9 and below are no longer supported.**
David Ghandehari04393242017-09-06 19:34:41 -070010
Andrew Top993f4802018-06-22 19:08:23 -070011## Experimental Version
12
13A description of all changes currently in the experimental Starboard version
14can be found in the comments of the "Experimental Feature Defines" section of
15[configuration.h](configuration.h).
16
Kaido Kertf585e262020-06-08 11:42:28 -070017## Version 12
18### Add support for platform-based UI navigation.
19
20The system can be disabled by implementing the function
21`SbUiNavGetInterface()` to return `false`. Platform-based UI navigation
22allows the platform to receive feedback on where UI elements are located and
23also lets the platform control what is selected and what the scroll
24parameters are.
25
26NOTE: This API is not used in the production web app yet, so please use the
27stub implementation for `SbUiNavGetInterface()` for now.
28
29### Require the OpenGL and Skia renderers on all platforms.
30
31The system must implement `SbGetGlesInterface()` in `starboard/gles.h`
32or use the provided stub implementation.
33
34This change also effectively deprecates the gyp variable
35"enable_map_to_mesh" in favor of CobaltGraphicsExtensionApi function
36`IsMapToMeshEnabled()` and the command line switch --disable_map_to_mesh.
37Now, Cobalt will assume the platform supports map_to_mesh, so platforms that
38do not will have to have return |false| from `IsMapToMeshEnabled()` or use
39the provided command line switch.
40
41### Require the captions API.
42
43The system must implement the captions functions in
44`starboard/accessibility.h` or use the provided stub implementations.
45System caption can be disabled by implementing the function
46`SbAccessibilityGetCaptionSettings(SbAccessibilityCaptionSettings*
47caption_settings)` to return false as the stub implementation does.
48This change also deprecates the SB_HAS_CAPTIONS flag.
49
50### Require compilation with IPv6.
51
52Cobalt must be able to determine at runtime if the system supports IPv6.
53IPv6 can be disabled by defining SB_HAS_IPV6 to 0.
54
55### Require the microphone API.
56
57The system must implement the microphone functions in
58`starboard/microphone.h` or use the provided stub functions.
59The microphone can be disabled by having `SbMicrophoneCreate()` return
60|kSbMicrophoneInvalid|.
61This change also deprecates the SB_HAS_MICROPHONE flag.
62
63### Require the memory mapping API.
64
65The system must implement the memory mapping functions in
66`starboard/memory.h` and `starboard/shared/dlmalloc.h` or use the provided
67stub implementations.
68This change also deprecates the SB_HAS_MMAP flag.
69
70### Require the on screen keyboard API.
71
72The system must implement the on screen keyboard functions in
73`starboard/window.h` or use the provided stub implementations.
74The on screen keyboard can be disabled by implementing the function
75`SbWindowOnScreenKeyboardIsSupported()` to return false
76as the stub implementation does.
77
78### Require speech recognizer API.
79
80The system must implement the functions in `starboard/speech_recognizer.h`
81or use the provided stub implementations.
82The speech recognizer can be disabled by implementing the function
83`SbSpeechRecognizerIsSupported()` to return `false` as the stub
84implementation does.
85
86### Require the speech synthesis API.
87
88The system must implement the speech synthesis function in
89`starboard/speech_synthesis.h` or use the provided stub implementations.
90Speech synthesis can be disabled by implementing the function
91`SbSpeechSynthesisIsSupported()` to return false as the stub
92implementation does.
93
94### Require the time thread now API.
95
96The system must implement the time thread now functions in
97`starboard/time.h` or use the provided stub implementations.
98Time thread now can be disabled by implementing the function
99`SbTimeIsTimeThreadNowSupported()` to return false as the stub
100implementation does.
101
102### Add SbFileAtomicReplace API.
103
104Introduce the Starboard function SbFileAtomicReplace() to provide the ability
105to atomically replace the content of a file.
106
107### Introduces new system property kSbSystemPathStorageDirectory.
108
109Path to directory for permanent storage. Both read and write
110access are required.
111
112### Introduce Starboard Application Binary Interface (SABI) files.
113
114SABI files are used to describe the configuration for targets such that two
115targets, built with the same SABI file and varying toolchains, have
116compatible Starboard APIs and ABIs.
117
118With this define, we have:
1191) Moved architecture specific defines and configurations from
120 configuration_public.h and *.gyp[i] files into SABI files.
1212) Included the appropriate SABI file in each platform configuration.
1223) Included the //starboard/sabi/sabi.gypi file in each platform
123 configuration which consumes SABI file fields and defines a set of
124 constants that are accessible when building.
1254) Provided a set of tests that ensure the toolchain being used produces
126 an executable or shared library that conforms to the included SABI file.
127
128For further information on what is provided by SABI files, or how these
129values are consumed, take a look at //starboard/sabi.
130
131### Updates the API guarantees of SbMutexAcquireTry.
132
133SbMutexAcquireTry now has undefined behavior when it is invoked on a mutex
134that has already been locked by the calling thread. In addition, since
135SbMutexAcquireTry was used in SbMutexDestroy, SbMutexDestroy now has
136undefined behavior when invoked on a locked mutex.
137
138### Migrate the Starboard configuration variables from macros to extern consts.
139
140The migration allows Cobalt to make platform level decisions at runtime
141instead of compile time which lets us create a more comprehensive Cobalt
142binary.
143
144This means Cobalt must remove all references to these macros that would not
145translate well to constants, i.e. in compile time references or initializing
146arrays. Therefore, we needed to change the functionality of the function
147`SbDirectoryGetNext` in "starboard/directory.h". Because we do not want to
148use variable length arrays, we pass in a c-string and length to the function
149to achieve the same result as before when passing in a `SbDirectoryEntry`.
150
151A platform will define the extern constants declared in
152"starboard/configuration_constants.h". The definitions are done in
153"starboard/<PLATFORM_PATH>/configuration_constants.cc".
154
155The exact mapping between macros and extern variables can be found in
156"starboard/shared/starboard/configuration_constants_compatibility_defines.h"
157though the naming scheme is very nearly the same: the old SB_FOO macro will
158always become the constant kSbFoo.
159
160### Improve player creation and output mode query.
161
1621. Introduce the new type SbPlayerCreationParam that holds the common
163parameters used to create an SbPlayer() and to query for the output mode
164support.
165
1662. Replace SbPlayerOutputModeSupported() by SbPlayerGetPreferredOutputMode()
167so the SbPlayer implementation can explicitly indicate its preference on
168output mode, when all output modes are supported.
169For example, Cobalt used to always query for |kSbPlayerOutputModePunchOut|
170first, without providing details about the video going to be played, and
171not query for output modes if punch out is supported. The new interface
172allows the implementation to fine tune its output mode. For example, it
173may decide to use |kSbPlayerOutputModeDecodeToTexture| for low resolution
174videos.
175
176### Introduce error handling into reference SbAudioSinkPrivate.
177
178The implementation is in:
179"starboard/shared/starboard/audio_sink/audio_sink_internal.*".
180
181### Change the thread types to be portable with stable ABI.
182
183The following types were updated:
184SbThread, SbMutex, SbOnce and SbConditionVariable.
185
186### Introduce support of cbcs encryption scheme into SbDrmSystem.
187
188The definition follows ISO/IEC 23001 part 7.
189
190### Add link register to SbThreadContext.
191
192### Make GYP configuration variables cobalt extensions instead.
193
194This change moves all of the GYP configuration variables to be members of
195the struct declared in "cobalt/extension/configuration.h". All members are
196function pointers that can be set for each platform, otherwise defaults
197will be used. These can be referenced through functions declared in
198"cobalt/configuration/configuration.h", which will use the extension API if
199available, but will otherwise fall back onto default values.
200
201### Add the PCLMULQDQ instruction feature.
202
203The PCLMULQDQ was added to the Starboard CPU features interface
204for x86 architectures.
205
206### |content_type| is added to SbMediaIsVideoSupported() and
207SbMediaIsAudioSupported().
208
209### Enables a test that checks that Opus is supported.
210
Kaido Kert87549032020-06-22 17:33:33 -0700211### Add `kSbSystemPropertySystemIntegratorName`
212
213This change also deprecates `kSbSystemPropertyOriginalDesignManufacturerName`.
214The `kSbSystemPropertySystemIntegratorName` value will represent the corporate
215entity responsible for submitting the device to YouTube certification and for
216the device maintenance/updates.
217
Kaido Kertf585e262020-06-08 11:42:28 -0700218### Deprecated the Blitter API.
219
220Blitter API is no longer supported on any platform. Use the OpenGL ES
221interface instead.
222
223### Deprecated the Crypto API.
224
225Crypto API is no longer supported on any platform. BoringSSL CPU
226optimizations are used instead.
227
228### Deprecate the SB_HAS_VIRTUAL_REGIONS flag as all platforms define it to 0.
229
230### Deprecate the usage of SB_MUST_FREQUENTLY_FLIP_DISPLAY_BUFFER.
231
232### Deprecated unused enums |kSbPlayerDecoderStateBufferFull| and
233|kSbPlayerDecoderStateDestroyed|.
234
Kaido Kert03affbc2020-06-29 16:29:13 -0700235### Deprecated the usage of |SbMediaIsOutputProtected()| and
236|SbMediaSetOutputProtection()|.
237
238### Deprecated the |SB_HAS_QUIRK_SEEK_TO_KEYFRAME| macro.
239
240### Deprecated the |SB_HAS_ASYNC_AUDIO_FRAMES_REPORTING| macro.
Kaido Kertf585e262020-06-08 11:42:28 -0700241
242### Deprecated 'cobalt_minimum_frame_time_in_milliseconds'.
243
244The variable 'cobalt_minimum_frame_time_in_milliseconds' is deprecated
245in favor of the usage of
246'CobaltExtensionGraphicsApi::GetMinimumFrameIntervalInMilliseconds' API.
247The declaration of 'GetMinimumFrameIntervalInMilliseconds' can be found
248in cobalt/renderer/backend/graphics_context.h
249
250### Deprecate support for GLES3 features.
251
252### Deprecate Web Extension support.
253
254The Platform Services API should be used
255instead. See cobalt/doc/platform_services.md.
256
Kaido Kerta3dd8352020-06-09 07:58:18 -0700257### Add event for text-to-speech settings changes.
258
259If the platform supports text-to-speech settings, it must use the new
260kSbEventTypeAccessiblityTextToSpeechSettingsChanged event to inform the app
261when those settings change. For older starboard versions, use
262kSbEventTypeAccessiblitySettingsChanged instead.
263
Chad Duffinac9ac062019-07-23 10:06:45 -0700264## Version 11
265
266### Add arguments to `SbMediaIsVideoSupported`.
267
268Add arguments for profile, level, bit depth, color primaries,
269transfer characteristics, and matrix coefficients. See comments of
270`SbMediaIsVideoSupported` for more details. Also, the function
271`SbMediaIsTransferCharacteristicsSupported()` is no longer necessary and is
272removed.
273
274### Add support for AC3 audio.
275
276### Replace `kSbMediaVideoCodecVp10` with `kSbMediaVideoCodecAv1`.
277
278### Add a new enum `kSbPlayerErrorMax` in `starboard/player.h`.
279
280### Add new parameter `max_video_capabilities` to `SbPlayerCreate()`.
281
282This gives the application the option to specify to the `SbPlayer` object
283what the maximum video specifications will be, as a hint to the platform
284on how to allocate resources for the `SbPlayer`. For example, if the player
285will never exceed a 240p playback resolution, then a software decoder may
286be initialized. Please see comment in `SbPlayerCreate()` for more details.
287
288### Refactor `SbPlayerSampleInfo` to reuse `SbPlayerSampleInfo` in filter based player.
289
290Additionally, add audio and codec info for every sample.
291
292### Introduce audio write duration
293
294Add a function `SbMediaSetAudioWriteDuration()` to `starboard/media.h`
295which communicates to the platform how much audio will be sent to the
296platform at a time.
297
298### Introduce Cobalt Extensions using the SbSystemGetExtension interface.
299
300Cobalt extensions implement app & platform specific functionality.
301
302### Deprecate unused function `SbSystemClearPlatformError()`.
303
304### Deprecate `kSbEventTypeNetworkDisconnect` and `kSbEventTypeNetworkConnect`.
305
306### Add support for using C++11 standard unordered maps and sets.
307
308By setting `SB_HAS_STD_UNORDERED_HASH` to 1, a platform can be configured
309to use C++11 standard hash table implementations, specifically, using:
310
311 - `std::unordered_map<>` for `base::hash_map<>`
312 - `std::unordered_multimap<>` for `base::hash_multimap<>`
313 - `std::unordered_set<>` for `base::hash_set<>`
314 - `std::unordered_multiset<>` for `base::hash_multiset<>`
315
316When `SB_HAS_STD_UNORDERED_HASH` is used, it is no longer necessary to
317specify `SB_HAS_LONG_LONG_HASH`, `SB_HAS_STRING_HASH`, `SB_HAS_HASH_USING`,
318`SB_HAS_HASH_VALUE`, `SB_HAS_HASH_WARNING`, `SB_HASH_MAP_INCLUDE`,
319`SB_HASH_NAMESPACE`, or `SB_HASH_SET_INCLUDE`.
320
321### Adds support for specifying screen diagonal length.
322
323When a platform knows its physical screen diagonal length, it can now provide
324that data to the application via `SbWindowGetDiagonalSizeInInches()`.
325
326
327### Add support for device authentication system properties.
328
329The system properties `kSbSystemPropertyCertificationScope` and
330`kSbSystemPropertyBase64EncodedCertificationSecret` have been added to enable
331client apps to perform device authentication. The values will be queried by
Andrew Topf058e8f2019-08-19 15:14:57 -0700332calls to `SbSystemGetProperty()` in `starboard/system.h`. An alternative to
333providing the `kSbSystemPropertyBase64EncodedCertificationSecret` property is
334to implement the SbSystemSignWithCertificationSecretKey() function, enabling
335the key to remain private and secure.
Chad Duffinac9ac062019-07-23 10:06:45 -0700336
337### Add support for `SbThreadSampler` and `SbThreadContext`.
338
339This is helpful for enabling the implementation of sampling-based profilers.
340A full implementation is only required if the new function
341`SbThreadSamplerIsSupported()` returns `true`. A valid implementation will need
342to implement the new `starboard/thread.h` functions,
343`SbThreadContextGetPointer()`, `SbThreadSamplerIsSupported()`,
344`SbThreadSamplerCreate()`, `SbThreadSamplerDestroy()`,
345`SbThreadSamplerFreeze()`, `SbThreadSamplerThaw()`.
346
347### Introduce functions for supplying suggestions to the on screen keyboard.
348
349A new API in `starboard/window.h` is introduced which declares the functions
350`SbWindowUpdateOnScreenKeyboardSuggestions()` and
351`SbWindowOnScreenKeyboardSuggestionsSupported()`. This is only relevant if
352`SB_HAS(ON_SCREEN_KEYBOARD)`.
353
354### Introduce new file error code `kSbFileErrorIO`.
355
356The new code, added to `starboard/file.h`, should match "EIO" on Posix
357platforms.
358
359### Move the definition of `FormatString()` from `starboard/string.h` to `starboard/format_string.h`.
360
361### Make the decode target content region parameters floats instead of ints.
362
363The `SbDecodeTargetInfoContentRegion` struct is modified to accept `float`s
364instead of `int`s. The primary motivation for this change is to make it so that
365on platforms where it is difficult to obtain the width and height of a texture,
366we can still correctly identify a precise fractional "normalized" content region
367with the texture width and height set to 1.
368
369### Add `kSbSystemPropertyOriginalDesignManufacturerName` enum value.
370
371This change also deprecates `kSbSystemPropertyNetworkOperatorName`.
372The `kSbSystemPropertyOriginalDesignManufacturerName` value will represent
373the corporate entity responsible for the manufacturing/assembly of the device
374on behalf of the business entity owning the brand.
375
376### Cross-platform helper Starboard definitions factored out of core interface.
377
378Cross-platform helper Starboard definitions refactored out of `/starboard/`
379and into `/starboard/common/`. In order to more explicitly identify the core
380Starboard API, multiple files, or parts of them, were moved into the static
381library `/starboard/common/`.
382
383### Log synchronization responsibility has been moved behind Starboard.
384
385The application is no longer responsible for synchronizing (e.g. via mutex)
386calls to Starboard logging, this is now expected to be done by the Starboard
387implementation. Logging functions, such as `SbLog` or `SbLogRaw`, must now have implementations that are thread-safe because they will be called from multiple
388threads without external synchronization.
389
390Additionally, the minimum logging level is no longer set by the application, and
391is instead set by grabbing the value as a command-line argument within
392Starboard.
393
394### Starboard now provides a EGL and GLES interface as a structure of pointers.
395
396To remove the direct inclusion of EGL and GLES system libraries throughout the
397application, we need to move this dependency behind a Starboardized API. This
398API can be found in `/starboard/egl.h` and `/starboard/gles.h`.
399
400### Add interface for querying for CPU features, in `/starboard/cpu_features.h`.
401
402The new interface enables the platform to communicate to the application which
403CPU features are available, which can enable the application to perform certain
404CPU-specific optimizations (e.g. SIMD).
405
Andrew Topf058e8f2019-08-19 15:14:57 -0700406### Deprecated SB_HAS_AUDIO_SPECIFIC_CONFIG_AS_POINTER and
407SB_HAS_DRM_KEY_STATUSES.
408
409These macros must always be set to 1 for Starboard version 6 or later. They will
410be removed in a future version. Any implementation that supports Starboard
411version 6 or later should be modified to no longer depend on these macros, with
412the assumption that their values are always 1.
413
Chad Duffinac9ac062019-07-23 10:06:45 -0700414
Andrew Top3f56eac2018-02-06 15:28:41 -0800415## Version 10
416
Andrew Top84143442018-07-12 10:44:23 -0700417### Introduce functions to query at runtime for media buffer settings
418
419In particular, the following methods are introduced:
420 - `SbMediaGetAudioBufferBudget`
421 - `SbMediaGetBufferAlignment`
422 - `SbMediaGetBufferAllocationUnit`
423 - `SbMediaGetBufferGarbageCollectionDurationThreshold`
424 - `SbMediaGetBufferPadding`
425 - `SbMediaGetBufferStorageType`
426 - `SbMediaGetInitialBufferCapacity`
427 - `SbMediaGetMaxBufferCapacity`
428 - `SbMediaGetProgressiveBufferBudget`
429 - `SbMediaGetVideoBufferBudget`
430 - `SbMediaIsBufferPoolAllocateOnDemand`
431 - `SbMediaIsBufferUsingMemoryPool`
432
433### Add support for player_filter_tests
434
435Require compiling 'player_filter_tests' test target sources on all
436platforms, including `audio_decoder_tests.cc` and `video_decoder_test.cc`. For
437this Starboard API version and beyond, `SB_HAS(PLAYER_FILTER_TESTS)` is true.
438
439### Deprecate SbMediaTime for SbTime
440
441SbMediaTime, which is 90khz based, was used to represent timestamps and
442duration related to SbPlayer. As most of the platforms represent video
443related times in milliseconds or microseconds, this causes a lot of
444otherwise unnecessary conversion. Now all timestamps and duration related
445to SbPlayer are represented by SbTime directly.
446
447### Refine sample writing of SbPlayer
448
449Added two new functions `SbPlayerGetMaximumNumberOfSamplesPerWrite()` and
450`SbPlayerWriteSample2()`. The former allows implementation to specify the
451maximum numbers of samples that can be written using the latter at once.
452As it takes multiple thread context switches to call `SbPlayerWriteSample2()`
453once, it can optimize performance on low end platforms by reducing the
454frequence of calling `SbPlayerWriteSample2()`.
455
456### Add support for player error messages
457
458`SbPlayerCreate()` now accepts an additional parameter, `player_error_func`,
459that can be called when an error occurs to propagate the error to the
460application.
461
462### Add support for system-level closed caption settings
463
464`SbAccessibilityGetCaptionSettings()` and `SbAccessibilitySetCaptionsEnabled()`
465along with a number of supporting structure definitions have been added
466to `accessibility.h`. Platforms will need to define SB_HAS_CAPTIONS to 1 in
467order to enable the interface.
468
469### Add support for audioless video playback
470
471SbPlayer can be created with only a video track, without any accompanying
472audio track. The SbPlayer implementation must now be able to play back
473a sole video track.
474
475### Add support for audio only video playback
476
477SbPlayer can be created with only an audio track, without any accompanying
478video track. The SbPlayer implementation must now be able to play back
479a sole audio track.
480
481### Require support for creating multiple SbPlayer instances
482
483Formerly, there were no tests ensuring that calling `SbPlayerCreate()` multiple
484times (without calling `SbPlayerDestroy()` in between) would not crash, and
485likewise no tests ensuring that calling `SbAudioSinkCreate()` multiple times
486(without calling `SbAudioSinkDestroy()` in between) would not crash.
487`SbPlayerCreate()` may return `kSbPlayerInvalid` if additional players are not
488supported. `SbAudioSinkCreate()` may return `kSbAudionSinkInvalid` if additional
489audio sinks are not supported.
490
491### Require stricter error handling on calls some SbPlayer* calls
492
493Specifically, `SbPlayerCreate()`, `SbPlayerCreateWithUrl()` and
494`SbDrmCreateSystem()` must result in invalid return values (e.g.
495`kSbPlayerInvalid` or `kSbDrmSystemInvalid` appropriately).
496
497### Refine the DRM API
498
499Specifically, the following changes have been made:
500 1. Add a callback to SbDrmCreateSystem that allows a DRM system to
501 signal that a DRM session has closed from the Starboard layer.
502 Previously, DRM sessions could only be closed from the application
503 layer.
504 2. Allow calling `SbDrmSessionUpdateRequestFunc` and
505 `SbDrmSessionUpdatedFunc` with extra status and optional error message.
506 3. Add request type parameter to `SbDrmSessionUpdateRequestFunc` to support
507 individualization, license renewal, and license release.
508
509### Remove kSbSystemPathSourceDirectory
510
511Test code looking for its static input files should instead use the `test`
512subdirectory in `kSbSystemPathContentDirectory`.
513
514### Remove kSbSystemPropertyPlatformUuid
515
516This property was only ever used in platforms using `in_app_dial`.
517The only usage of this system property was replaced with a
518self-contained mechanism.
519
520### Deprecate kSbMediaAudioSampleTypeInt16
521
522`SB_HAS_QUIRK_SUPPORT_INT16_AUDIO_SAMPLES` has to be defined to continue
523support int16 audio samples after this version.
524
Andrew Top8b6b16e2018-07-25 17:44:41 -0700525### Add kSbPlayerErrorCapabilityChanged to SbPlayerError
526
527This allows the SbPlayer implementation to notify the app that its playback
528capability has changed during a video playback. For example, the system may
529support vp9 decoding with an external GPU. When the external GPU is detached,
530this error code can signal the app to retry the playback, possibly with h264.
531
Andrew Top84143442018-07-12 10:44:23 -0700532### Add support for SbSystemSupportsResume()
533
534Platforms doesn't need to resume after suspend can return false in
535`SbSystemSupportsResume()` to free up the resource used by resume after
536suspend.
537Please see the comment in `system.h` for more details.
538
539### Support the `kSbKeyMicrophone` keycode
540
541### Add support for new decode target type, `kSbDecodeTargetFormat3Plane10BitYUVI420`
542
543Added `kSbDecodeTargetFormat3Plane10BitYUVI420` to the `SbDecodeTargetFormat`
544enum in order to support 10-bit YUV textures.
545
546### Optionally provide absolute timestamp to `SbAudioSinkConsumeFramesFunc()`
547
548`SbAudioSinkConsumeFramesFunc()` can now optionally accept an absolute
549timestamp parameter that indicates when the frames are consumed.
550Platforms that have the `frames_consumed` updated asynchronously can have
551more accurate audio time reporting with this extra parameter.
552Please see the comment in `audio_sink.h` for more details.
553
554### Add support for the `SbAtomic8` type and memory access functions
555
556### Introduce `SbMemoryProtect()`
557
558`SbMemoryProtect()` allows memory access permissions to be changed after they
559have been mapped with `SbMemoryMap`.
560
561### Add a `timestamp` field to `SbInputData`
562
563This allows platforms to provide more precise information on exactly when
564an input event was generated. Note that if
565`SbSystemHasCapability(kSbSystemCapabilitySetsInputTimestamp)` returns false,
566the `timestamp` field of `SbInputData` should be ignored by applications.
567
568### Introduces `kSbMemoryMapProtectReserved` flag.
569
570`kSbMemoryMapProtectReserved`, which is identical to `SbMemoryMapFlags(0)`, is
571introduced. When `SbMemoryMap()` is called with `kSbMemoryMapProtectReserved`,
572only virtual address space should be reserved for the mapped memory, and not
573actual physical memory.
574
Mike Fleming3933d922018-04-02 10:53:08 -0700575### Add support for multiple versions of ffmpeg
576
577An extra version agnostic ffmpeg dynamic dispatch layer is added in order to
578support multiple different versions of ffmpeg as may appear on user systems.
579
580### Make linux-x64x11 builds use GLX (via Angle) instead of EGL by default
581
582While common Cobalt code still targets EGL/GLES2, we now use Angle on
583linux-x64x11 builds to translate those calls to GLX/GL calls. Thus, from
584the perspective of the system, linux-x64x11 builds now appear to use
585GLX/GL. This change was made because GLX/GL was generally found to have
586better desktop support than EGL/GLES2. The logic for this is added in the
587Starboard [enable_glx_via_angle.gypi](linux/x64x11/enable_glx_via_angle.gypi)
588file.
589
590### Split `base.gypi` into `cobalt_configuration.gypi` and `base_configuration.gypi`
591
592Up until now, both Cobalt-specific build configuration options as well as
593application-independent Starboard build configuration options were mixed
594together within base.gypi. They have now been split apart, and the application
595independent options have been moved into Starboard under
596[base_configuration.gypi](build/base_configuration.gypi). The Cobalt-specific
597options have been left in Cobalt, though renamed to `cobalt_configuration.gypi`.
598
Andrew Top3f56eac2018-02-06 15:28:41 -0800599### Moved `tizen` to `contrib/tizen`.
600
601Please see [contrib/README.md](contrib/README.md) for description of
602expectations for contents in this directory.