1447 Commits

Author SHA1 Message Date
Steve Howard
b06a68b9c4 Merge "Add a name to the previously-unnamed thread created by SoundPoolThread." 2010-03-15 13:40:53 -07:00
Andreas Huber
43f0e8e964 We no longer do sanity checks based on "hdlr" tags in .mp4 files. Pretty soon we'll play any bytestream that even vaguely resembles the spec...
Change-Id: I43e05404860d8856b8aa566cc9b256bb3fa57e6f
related-to-bug: 2483328
2010-03-15 11:45:40 -07:00
Ray Chen
74d4843641 Fix #2509370 ThumbnailUtils.createThumbnailFromEXIF crashes media provider.
Change-Id: Ia2cd00fb0fbdb32e9fb89b4d33ad3c1410eb40d3
2010-03-15 10:45:35 -07:00
Andreas Huber
7d74086141 Merge "Hack to "support" "enhanced" podcasts... slang for malformed .mp4 files." 2010-03-15 10:38:16 -07:00
Andreas Huber
174de8ea46 Merge "Fix the media metadata retriever (tests). The native constants must match those published at the java layer." 2010-03-15 10:38:00 -07:00
Andreas Huber
2d6f709b93 Merge "Tag the "testid3" commandline tool as "debug-only". It doesn't need to be included in release builds." 2010-03-15 10:37:34 -07:00
Andreas Huber
9fbaca9437 Tag the "testid3" commandline tool as "debug-only". It doesn't need to be included in release builds.
Change-Id: I7e489af3d569015e2a93d340088e059e984f8153
related-to-bug: 2513148
2010-03-15 10:33:52 -07:00
Andreas Huber
4d60fc5b43 Hack to "support" "enhanced" podcasts... slang for malformed .mp4 files.
Change-Id: I690b9f336062a0ff1a667d6461d66b1386db866d
related-to-bug: 2511744
2010-03-15 10:24:44 -07:00
Andreas Huber
122ff04c69 Fixing the sim build.
Change-Id: I307f6d59f473471adcf855e66b4e8275ab1b3b74
2010-03-15 09:21:46 -07:00
Andreas Huber
e3452d3fe1 Fix the media metadata retriever (tests). The native constants must match those published at the java layer.
Change-Id: Ic1efed709e4d93c61913b231a8cd3ef1074f8ca0
2010-03-12 15:08:52 -08:00
Andreas Huber
d27e8d2bef Merge "Boost OMX callback dispatcher thread priority to prevent audio playback stuttering under increased system load" 2010-03-12 14:40:29 -08:00
Andreas Huber
98b29565b9 Boost OMX callback dispatcher thread priority to prevent audio playback stuttering under increased system load
Change-Id: I1b5339b4d39bd964f286cdf1369d0e0492a465d7
related-to-bug: 2492002
2010-03-12 14:33:12 -08:00
Yu Shan Emily Lau
adc238a97c Fix the bug that it should write the zero diff to the output file when the actual diff is negative.
Change-Id: I5d7c12b0ad9c0286658067cacb7f385626a3107f
2010-03-12 12:04:30 -08:00
Yu Shan Emily Lau
d3d9b85ef4 Merge "Update the new activity name." 2010-03-12 11:10:56 -08:00
Andreas Huber
34ec95de2f Merge "HTTPStream and HTTPDataSource now support cancellation of the connection process, AwesomePlayer takes advantage of this in cases where ::reset() or ::suspend() is called while in the preparation phase to bail out early. Also fixes in issue where the audio codec was not properly stopped if no audio player object ever took ownership." 2010-03-12 09:39:33 -08:00
Andreas Huber
edbb4d8f39 HTTPStream and HTTPDataSource now support cancellation of the connection process, AwesomePlayer takes advantage of this in cases where ::reset() or ::suspend() is called while in the preparation phase to bail out early. Also fixes in issue where the audio codec was not properly stopped if no audio player object ever took ownership.
Change-Id: I6d73defe6d276693853a469db267bb2668d07af5
related-to-bugs: 2475845,2414536
2010-03-12 09:05:10 -08:00
Kenny Root
2fe4c096ef Merge "Add correct copyright headers to multiple files" 2010-03-11 21:23:51 -08:00
Ray Chen
eff8dae0a9 Merge "Add GPSProcessingMethod tag to ExifInterface." 2010-03-11 19:54:52 -08:00
Kenny Root
15a4d2ffd0 Add correct copyright headers to multiple files
Format for the list of changes shows the origin commit reference followed
by the file name.

33931-p9 awt/org/apache/harmony/awt/gl/font/AndroidGlyphVector.java
33931-p9 awt/org/apache/harmony/awt/gl/image/PngDecoderJava.java
133776-p9 core/java/android/app/IntentService.java
127013-p9 core/java/android/appwidget/AppWidgetHost.java
27863-p9 core/java/android/bluetooth/BluetoothAudioGateway.java
60765-p9 core/java/android/content/SyncResult.java
43920-p9 core/java/android/content/pm/ActivityInfo.java
43920-p9 core/java/android/content/pm/ApplicationInfo.java
43920-p9 core/java/android/content/pm/InstrumentationInfo.java
43920-p9 core/java/android/content/pm/PackageInfo.java
44103-p9 core/java/android/content/pm/PackageItemInfo.java
68960-p9 core/java/android/content/pm/PackageStats.java
43920-p9 core/java/android/content/pm/ResolveInfo.java
43920-p9 core/java/android/content/pm/ServiceInfo.java
60641-p9 core/java/android/content/res/Configuration.java
60734-p9 core/java/android/content/res/TypedArray.java
137672-p9 core/java/android/inputmethodservice/ExtractButton.java
123112-p9 core/java/android/inputmethodservice/ExtractEditText.java
119291-p9 core/java/android/inputmethodservice/IInputMethodSessionWrapper.java
112946-p9 core/java/android/inputmethodservice/IInputMethodWrapper.java
115078-p9 core/java/android/os/BatteryStats.java
124790-p9 core/java/android/text/style/UpdateAppearance.java
45083-p9 core/java/android/view/RawInputEvent.java
101491-p9 core/java/android/view/inputmethod/EditorInfo.java
114701-p9 core/java/android/view/inputmethod/ExtractedText.java
123112-p9 core/java/android/view/inputmethod/ExtractedTextRequest.java
119291-p9 core/java/com/android/internal/os/HandlerCaller.java
129279-p9 core/java/com/android/internal/os/PkgUsageStats.java
114701-p9 core/java/com/android/internal/view/IInputConnectionWrapper.java
114701-p9 core/java/com/android/internal/view/InputConnectionWrapper.java
84364-p9 opengl/java/android/opengl/EGLLogWrapper.java
11355-p9 opengl/tools/glgen/src/CFunc.java
11355-p9 opengl/tools/glgen/src/CType.java
11355-p9 opengl/tools/glgen/src/CodeEmitter.java
11355-p9 opengl/tools/glgen/src/GenerateGL.java
11355-p9 opengl/tools/glgen/src/JFunc.java
11355-p9 opengl/tools/glgen/src/JType.java
11355-p9 opengl/tools/glgen/src/JniCodeEmitter.java
11355-p9 opengl/tools/glgen/src/ParameterChecker.java
57236-p9 services/java/com/android/server/status/AnimatedImageView.java
66754-p9 services/java/com/android/server/status/CloseDragHandle.java
57188-p9 services/java/com/android/server/status/DateView.java
46928-p9 services/java/com/android/server/status/ExpandedView.java
70590-p9 services/java/com/android/server/status/FixedSizeDrawable.java
45968-p9 services/java/com/android/server/status/IconData.java
57470-p9 services/java/com/android/server/status/IconMerger.java
82719-p9 services/java/com/android/server/status/LatestItemView.java
45968-p9 services/java/com/android/server/status/NotificationData.java
66754-p9 services/java/com/android/server/status/NotificationLinearLayout.java
57458-p9 services/java/com/android/server/status/NotificationViewList.java
45968-p9 services/java/com/android/server/status/StatusBarException.java
45968-p9 services/java/com/android/server/status/StatusBarIcon.java
46130-p9 services/java/com/android/server/status/StatusBarNotification.java
45968-p9 services/java/com/android/server/status/StatusBarView.java
46199-p9 services/java/com/android/server/status/Ticker.java
62286-p9 services/java/com/android/server/status/TickerView.java
57188-p9 services/java/com/android/server/status/TrackingView.java
86041-p9 telephony/java/android/telephony/PhoneStateListener.java
87020-p9 telephony/java/com/android/internal/telephony/TelephonyIntents.java
136269-p9 telephony/java/com/android/internal/telephony/gsm/SpnOverride.java
34409-p9 tests/FrameworkTest/src/com/android/frameworktest/FrameworkTestApplication.java
55717-p9 tests/FrameworkTest/src/com/android/frameworktest/performance/InvalidateCycle.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityLandscape.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityPortrait.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityNonScrollablePanScan.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityNonScrollableResize.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityScrollablePanScan.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityScrollableResize.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityPanScan.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityResize.java
127341-p9 tests/ImfTest/src/com/android/imftest/samples/ButtonActivity.java
129347-p9 tests/ImfTest/src/com/android/imftest/samples/DialogActivity.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/EditTextActivityDialog.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityNoScrollPanScan.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollPanScan.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollResize.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivityNotSelected.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivitySelected.java
25959-p9 tests/framework-tests/src/android/test/FrameworkTests.java
46162-p9 tests/framework-tests/src/com/android/internal/http/multipart/MultipartTest.java
77101-p9 tools/layoutlib/bridge/tests/com/android/layoutlib/bridge/NinePatchTest.java
9788976b1465ce982b5ae7c741345edd0ecd9322 core/java/android/accounts/AuthenticatorDescription.java
53332883543868fb83e111a07306368b7772b340 core/java/android/app/UiModeManager.java
93e7e22ec91dbc641d10ca6d70423e1357a95bba core/java/android/app/FullBackupAgent.java
328c0e7986aa6bb7752ec6de3da9c999920bb55f core/java/android/content/CursorEntityIterator.java
307da1a46b4c9b711bafe8fbaaa6b98e8868c18e core/java/android/content/SyncQueue.java
307da1a46b4c9b711bafe8fbaaa6b98e8868c18e core/java/android/content/SyncOperation.java
eb034652c2037a47ebfd99779e8383bb8bb528af core/java/android/content/pm/LabeledIntent.java
49237345d83e62fdb9eb8d50b13ad086636a04fa core/java/android/content/pm/FeatureInfo.java
a2b6c3775ed6b8924232d6a01bae4a19740a15f8 core/java/android/content/pm/PackageInfoLite.java
3ecd5f437580e49d80beecd29489d5fb1f7a7db0 core/java/android/content/pm/RegisteredServicesCacheListener.java
5ebbb4a6b3e16f711735ae0615b9a9ea64faad38 core/java/android/content/pm/XmlSerializerAndParser.java
c4516a7b62de525e3d6d5e76851bdfaf12c11f05 core/java/android/database/sqlite/SQLiteTransactionListener.java
9bbc21a773cbdfbef2876a75c32bda5839647751 core/java/com/android/internal/backup/LocalTransport.java
21f1bd17b2dfe361acbb28453b3f3b1a110932fa core/java/com/android/internal/content/PackageMonitor.java
4c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3 core/java/com/android/internal/view/BaseSurfaceHolder.java
4c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3 core/java/com/android/internal/view/BaseIWindow.java
e540833fdff4d58e37c9ba859388e24e2945ed45 core/java/com/android/internal/os/SamplingProfilerIntegration.java
192ab903887bbb8e7c7b6da5c581573850e30f46 core/tests/coretests/src/android/widget/expandablelistview/PositionTesterContextMenuListener.java
1619367ab823150fa8856d419abe02ceb75886f1 media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaProfileReader.java
27f8002e591b5c579f75b2580183b5d1c4219cd4 opengl/tools/glgen/stubs/gles11/glGetString.java
560814f6b11abe83ff0c4ed18cac015c276b3181 opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.java
560814f6b11abe83ff0c4ed18cac015c276b3181 opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.java
560814f6b11abe83ff0c4ed18cac015c276b3181 opengl/tools/glgen/stubs/gles11/glShaderSource.java
1c4907ee77392afb768c2f088e0dedbe4239f6fb opengl/tools/glgen/src/GenerateGLES.java
1c4907ee77392afb768c2f088e0dedbe4239f6fb opengl/tools/glgen/src/Jsr239CodeEmitter.java
1c4907ee77392afb768c2f088e0dedbe4239f6fb opengl/tools/glgen/src/GLESCodeEmitter.java
69e21f5f6e0d04539cd92848ea009dd615d88c2c opengl/tests/gldual/src/com/android/gldual/TriangleRenderer.java
c028be4f3b8c7476b46859f66c3f33d528adf181 packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
7c6efa13f129dbae5319f0981a430d4662f43354 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerMeasurement.java
7c6efa13f129dbae5319f0981a430d4662f43354 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerTestActivity.java
7c6efa13f129dbae5319f0981a430d4662f43354 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerTestRunner.java
df8a3f31d871db25e952972c2eb346a71186e9e3 tests/BrowserTestPlugin/src/com/android/testplugin/TestPlugin.java
cfaef699e1dfb3a75d5b51f3b15816f13670fd51 tests/permission/src/com/android/framework/permission/tests/ActivityManagerPermissionTests.java
cfaef699e1dfb3a75d5b51f3b15816f13670fd51 tests/permission/src/com/android/framework/permission/tests/ServiceManagerPermissionTests.java
cfaef699e1dfb3a75d5b51f3b15816f13670fd51 tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java

Copyright header moved to top in following file:

core/tests/coretests/src/android/widget/ListViewTest.java

Change-Id: I3c3198be5a0ba36e18679ed834170432bf0b8418
2010-03-11 18:22:10 -08:00
Ray Chen
e208377fba Add GPSProcessingMethod tag to ExifInterface.
Change-Id: I7575ae3195dc510e7020368794a66bb064839104
2010-03-11 17:41:04 -08:00
Yu Shan Emily Lau
806cdd82f0 Update the new activity name.
Change-Id: I94d986a5a7f3f8ebf0b7491adf3887b21f1de1eb
2010-03-11 17:33:08 -08:00
Marco Nelissen
6be9c162d6 Merge "Revert "Do autodetection even if no locale was specified, and use the"" 2010-03-11 14:56:54 -08:00
Steve Howard
09468dbbe9 Add a name to the previously-unnamed thread created by SoundPoolThread.
SoundPool itself also creates a thread, which was called "SoundPoolThread", unrelated to the SoundPoolThread class.  The SoundPoolThread class then created an unnamed thread, which showed up as "android:unnamed_thread".  That's confusing, so this change renames the SoundPool thread to "SoundPool" and then names the SoundPoolThread thread as "SoundPoolThread".  Say that ten times fast :)

Change-Id: I67b7e644a30c94b6eda44bf970764a52a1c2958b
2010-03-11 13:59:54 -08:00
Marco Nelissen
dea009ab8e Revert "Do autodetection even if no locale was specified, and use the"
This reverts commit b45b0845a6db32848ad08ac1037ef67a68ec2d39.
2010-03-11 13:37:46 -08:00
Nicolas Catania
7bd3d7d196 Allow invoke in all the player states except idle and error.
Previously invoke would work only after prepare but not
when the player is in play or pause state (for instance).
This new change just check that the player has been initialized
and is not in the error state.

Bug:2488931
Change-Id: I9b9f3679593a3b7697c1a84d993fdcd7e1693a90
2010-03-11 10:07:14 -08:00
Andreas Huber
35e611fb8f Merge "Reduce buffer sizes related to HTTP media data transfer in order to reduce the probability of a connection timeout/reset due to long periods of time between socket activity." 2010-03-11 09:14:45 -08:00
Nicolas Catania
df2d3cdca7 Revert "Allow invoke in all the player states except idle and error."
This reverts commit 88f3b81d065d4bec6f69a25eda99158e254f55b1.
2010-03-11 08:16:26 -08:00
Nicolas Catania
2e40183638 Merge "Allow invoke in all the player states except idle and error." 2010-03-11 07:56:18 -08:00
Yu Shan Emily Lau
a6f9e38b7f Modified the expected metadata result as the behavior of Stagefright.
Change-Id: Id86e262f0d3375eeda68d5df04e4ebd2f21ffc4f
2010-03-10 19:03:56 -08:00
Andreas Huber
fb1eb6fbc9 Reduce buffer sizes related to HTTP media data transfer in order to reduce the probability of a connection timeout/reset due to long periods of time between socket activity.
Change-Id: I799ce1d58d56a31088a89603d8a18d24780f5b57
related-to-bug: 2492187
2010-03-10 17:12:01 -08:00
Nicolas Catania
88f3b81d06 Allow invoke in all the player states except idle and error.
Previously invoke would work only after prepare but not
when the player is in play or pause state (for instance).
This new change just check that the player has been initialized
and is not in the error state.

Bug:2488931

Change-Id: I7a69d1b6e3eec1e5dbdf7378ff2085329062595a
2010-03-10 16:17:30 -08:00
Andreas Huber
b94b52b94e Merge "Instead of instantiating StagefrightMetadataRetriever directly, instantiate a MediaMetadataRetriever which will do-the-right-thing(tm) even for .wma/.wmv/.asf files." 2010-03-10 11:12:56 -08:00
Andreas Huber
1ce986767a Instead of instantiating StagefrightMetadataRetriever directly, instantiate a MediaMetadataRetriever which will do-the-right-thing(tm) even for .wma/.wmv/.asf files.
Change-Id: Ibda4b5268514934f14a3d49a564902bc670f4384
related-to-bug: 2074137
2010-03-10 10:55:35 -08:00
Marco Nelissen
e44b41bada MEDIA_PLAYER_STATE_ERROR is not a bitmask
(b/2502881)

Change-Id: I08e427eb2c36f5d70e40f9aeb8638fa8262de989
2010-03-10 10:55:09 -08:00
Ray Chen
b4ca6ef994 Avoid overriding DATE_TAKEN by unreliable file time. MediaProvider will calculate it if needed.
Change-Id: I05cb8628f2333c26de5c05ee1c7676b8f79a5e9a
2010-03-09 14:23:23 -08:00
Jean-Michel Trivi
758559e6b7 Fix bug 2329540
Part 1 of the fix: when the user doesn't elect to use the car dock
 for music and media, the APM was not aware of the device being
 docked.
 This is fixed by dissociating the notification for the APM of
 the docking to the dock from the sink state change of the A2DP
 device.
 Also missing was forcing the volumes to be reevaluated whenever
 the device is docked or undocked, as volumes for docks may
 differ, even when the same output device is being used.

Change-Id: If5314e27821a71adbd6df6fdf887c45208241d96
2010-03-09 12:45:55 -08:00
Jean-Michel Trivi
a9fb0a2497 Merge "Unhide API additions to AudioManager for AudioFocus support." 2010-03-09 09:17:45 -08:00
Jean-Michel Trivi
eabb6df2fa Unhide API additions to AudioManager for AudioFocus support.
Change-Id: Ifc7d764703632eb91db11587675ae70ec14510e8
2010-03-09 09:15:19 -08:00
Andreas Huber
29a02a95cb Use a more descriptive user-agent string (similar to PV's before) in stagefright http requests.
Change-Id: I4e8ea856327bdb65989f75dab3673baeaf9637c8
2010-03-08 16:50:44 -08:00
Andreas Huber
147113ee54 Merge "The audio track was accidentally not participating in the prefetch since it wasn't started at the time prepare() was called. Also, properly report the cached duration even near the end when the source has no more data to fetch." 2010-03-08 16:02:16 -08:00
Andreas Huber
dc9927d464 The audio track was accidentally not participating in the prefetch since it wasn't started at the time prepare() was called. Also, properly report the cached duration even near the end when the source has no more data to fetch.
Change-Id: I66a92fec24c9bfb25f1c186f1c877127bae2b4f9
related-to-bug: 2444425
2010-03-08 15:46:13 -08:00
Andreas Huber
0e0b0c9e3d Merge "Apparently a MemoryHeapPMem must be slap()ed for SurfaceFlinger to use the contained buffers." 2010-03-08 14:29:38 -08:00
Andreas Huber
4c987433da Apparently a MemoryHeapPMem must be slap()ed for SurfaceFlinger to use the contained buffers.
Change-Id: I86916a14c6cf9e65145711c6ded433b864f84456
related-to-bug: 2474091
2010-03-08 13:43:35 -08:00
Andreas Huber
55864df7b6 Increase the amount of data buffered at preparation time. Make sure to start preparing after the codecs have been started, otherwise no buffering will happen.
Change-Id: I2c54db085cc76f4069ab381177e94e1b81005b02
related-to-bug: 2474091
2010-03-08 12:28:22 -08:00
Andreas Huber
3c53c69a4e The prefetched source was unnecessarily holding a lock while receiving data from the network, sometimes blocking for seconds over 2G networks with corresponding drops in audio playback. Also, if the cache was full we'd report a cache duration of 0 instead of maximum size.
Change-Id: I46c8083f12f2dd728302095369197ca7e6b78bf8
related-to-bugs: 2492187, 2444425
2010-03-08 11:07:24 -08:00
Eric Laurent
29855801de Merge "Fix issue 2428563: Camera rendered inoperable by voice call interruption." 2010-03-05 16:01:47 -08:00
Eric Laurent
ba8811f552 Fix issue 2428563: Camera rendered inoperable by voice call interruption.
The problem is that AudioRecord never exits read() when a timeout occurs while trying
to get new PCM data from audio hardware input buffer: it just keeps waiting and retrying until stop() is called.
In the same time, opencore AndroidAudioInput::audin_thread_func() loop cannot be exited when stuck
in AudioRecord::read() because the iExitAudioThread flag can only be sampled when AudioRecord::read()
returns. We remain stuck with the audio input thread running.

The fix consists in modifying AudioRecord behavior in case of timeout when getting new PCM samples.
We now wait only one timeout period and try to restart audio record, in case the problem is due to a media_server
process crash. If this fails, we exit read() with a number of bytes read equals to 0 so that
AndroidAudioInput::audin_thread_func() loop can exit.

Also modified Audioflinger::RecordThread() loop so that we attempt to recover from HAL read errors.
In case of read error, the input stream is forced to standby so that next read attempt does a
reconfiguration and restart of the audio input device.
2010-03-05 11:54:23 -08:00
Andreas Huber
bda5780d39 Merge "Instead of allocating the decoder instances in response to a call to setDataSource, postpone allocation to the preparation phase where it belongs." 2010-03-05 11:00:36 -08:00
Andreas Huber
3ac94efc21 Instead of allocating the decoder instances in response to a call to setDataSource, postpone allocation to the preparation phase where it belongs.
related-to-bug: 2492205
2010-03-05 10:42:10 -08:00
Andreas Huber
d197431279 Merge "NPR's audio streams start with a 30sec segment whose mp3 headers are subtly different from those following. Allow certain bits to vary that were thought to be fixed before." 2010-03-05 09:33:29 -08:00