Yaowu Xu
50ec6311e6
Move two functions to encoder
...
As they are used by encoder only.
Change-Id: I7b1e6955b218aba66fe156523521a8121c9a84a4
2013-12-16 17:27:48 -08:00
Dmitry Kovalev
bb7b4bad6d
Merge "Getting rid of b_{width, height}_log2 calls in non-420 loop filter."
2013-12-16 15:10:25 -08:00
Dmitry Kovalev
865d5b83f2
Calling is_inter_block() only if mbmi is available.
...
Modifying vp9_get_intra_inter_context(), vp9_get_reference_mode_context(),
vp9_get_pred_context_single_ref_p1(), vp9_get_pred_context_single_ref_p2()
functions.
Change-Id: Ifaa2c3eb0c76a544ae8bd1fe3155aada266eae78
2013-12-16 15:09:33 -08:00
hkuang
fb53409d2a
Merge "Remove border extension in intra frame prediction."
2013-12-16 14:48:54 -08:00
Dmitry Kovalev
b1d821704b
Merge "Yet another vp9_pred_common.c cleanup."
2013-12-16 14:10:52 -08:00
hkuang
25e5552630
Remove border extension in intra frame prediction.
...
Change-Id: Id677df4d3dbbed6fdf7319ca6464f19cf32c8176
2013-12-16 14:05:58 -08:00
Dmitry Kovalev
b5c9261832
Converting vp9_treecoder.h to vp9_prob.{h, c}
...
Moving vp9_norm probability table from vp9_entropy.c to vp9_prob.c
Change-Id: Ie757b73860c6f43130790c332b292e2a1a81b788
2013-12-16 12:53:09 -08:00
Frank Galligan
fbada948fa
Add frame buffer lru cache.
...
Add an option for libvpx to return the least recently used
frame buffer.
Change-Id: I886a96ffb94984f1c42de53086e0131922df3260
2013-12-15 19:57:42 -08:00
Frank Galligan
d0ee1fd797
Merge "Add support to pass in external frame buffers."
2013-12-15 19:18:25 -08:00
Frank Galligan
10f891696b
Add support to pass in external frame buffers.
...
VP9 decoder can now use frame buffers passed in by the application.
Change-Id: I599527ec85c577f3f5552831d79a693884fafb73
2013-12-15 18:45:46 -08:00
Dmitry Kovalev
4d2d1591a3
Converting mode_lf_lut struct member into static lookup table.
...
Change-Id: I6e6c7cb5ff5b60fbe6a7c314daec5ccdc2cafcc3
2013-12-14 17:42:12 -08:00
Dmitry Kovalev
2aadc06e0d
Yet another vp9_pred_common.c cleanup.
...
Change-Id: I617d6c610d181076773c5c3d6f3dbc6717b02580
2013-12-14 17:39:24 -08:00
Dmitry Kovalev
64cf398713
Merge "Using MV struct instead of int_mv union in encoder."
2013-12-13 16:42:54 -08:00
Dmitry Kovalev
33df4f0483
Merge "vp9_convole.c cleanup."
2013-12-13 15:40:00 -08:00
Dmitry Kovalev
f54b515797
Merge "Cleaning up vp9_append_sub8x8_mvs_for_idx()."
2013-12-13 15:38:53 -08:00
Dmitry Kovalev
25da21b14e
Using MV struct instead of int_mv union in encoder.
...
Change-Id: I8b81a3e4b4fa530a654c28d9c136afa0c1d379fd
2013-12-13 15:24:48 -08:00
Dmitry Kovalev
466cc94e7a
Getting rid of b_{width, height}_log2 calls in non-420 loop filter.
...
Using num_{4x4, 8x8}_blocks_{wide, high}_lookup instead.
Change-Id: I66a7ab807fa57395253b2d0e636c2479fa8c4adf
2013-12-13 12:53:41 -08:00
James Zern
178db94cd6
vp9 asserts: fix compile warning
...
string literal to int within an assert
Change-Id: I0c889256b67a078e6e2a79577f0b7ae084243258
2013-12-12 19:49:19 -08:00
Dmitry Kovalev
629fb85f17
vp9_convole.c cleanup.
...
Making overall logic more clear, moving "hacked" calculation of base filter
array pointer to get_filter_base() function.
Change-Id: Ibbd38a9f937e48d35bbbfef3ad933ab36664cccb
2013-12-12 11:14:06 -08:00
Deb Mukherjee
7edd5170b5
Merge "Changes interfaces to vp9_get_compressed_data fn"
2013-12-11 15:50:40 -08:00
Dmitry Kovalev
e79103166f
Merge "Renames for consistency in vp9_pred_common.{c, h} files."
2013-12-11 14:30:44 -08:00
Deb Mukherjee
e33855cc47
Changes interfaces to vp9_get_compressed_data fn
...
Silences some lint warnings in previous patches
Change-Id: I04bf47ebe7e63a95fd322719a3154e589c115d78
2013-12-11 14:22:51 -08:00
hkuang
9460226acd
Merge "Fix valgrind error."
2013-12-11 13:22:32 -08:00
hkuang
1339f3842c
Fix valgrind error.
...
Temporarily change memcpy to memmove.
Change-Id: I700a197bc1ce496be1ddad7118429c5da465b0ca
2013-12-11 13:21:28 -08:00
Dmitry Kovalev
3274fc30ee
Renames for consistency in vp9_pred_common.{c, h} files.
...
Change-Id: Icba06e84ca55c419abbacedf5825eeb394a1b140
2013-12-10 18:31:46 -08:00
Dmitry Kovalev
098d13ba10
Cleaning up vp9_append_sub8x8_mvs_for_idx().
...
Replacing if-else with switch statement, reordering function arguments.
Change-Id: I4825d2ef311ba8999b6d4ceb0eef003587a13434
2013-12-10 17:56:53 -08:00
Dmitry Kovalev
2dd20e468a
Cleaning up skip context calculation.
...
Renames:
vp9_get_pred_context_mbskip => vp9_get_skip_context
vp9_get_pred_prob_mbskip => vp9_get_skip_prob
Change-Id: I2af499848ef73f3f5cd8cdb27852d0bcdfe31d09
2013-12-10 14:11:26 -08:00
Dmitry Kovalev
35b7b0b549
Merge "Removing unused vp9_get_pred_flag_mbskip() function."
2013-12-10 13:58:35 -08:00
hkuang
19bbe41c71
Merge "Refactor inter_predictor function."
2013-12-10 13:34:24 -08:00
Dmitry Kovalev
48088f210d
Removing unused vp9_get_pred_flag_mbskip() function.
...
Change-Id: Ib46a97d8ff9f2915b9fa2abba3cd18b6711fcb0c
2013-12-10 12:53:17 -08:00
Dmitry Kovalev
e18eb7721e
Merge "Renaming comp_pred_mode to reference_mode."
2013-12-10 10:52:34 -08:00
hkuang
6c9dcae532
Refactor inter_predictor function.
...
Change-Id: Ic429b2f16462e926f30efb3af4da3080026359d8
2013-12-10 10:36:44 -08:00
Dmitry Kovalev
d2dad31e79
Merge "Cleaning up vp9_get_pred_context_switchable_interp() functuion."
2013-12-09 17:34:30 -08:00
hkuang
d70a8c09c6
Merge "Implenment on demand border extension. In place extend the border now. Next commit will totally remove the border."
2013-12-09 17:16:31 -08:00
Dmitry Kovalev
9edd4d4db7
Cleaning up vp9_get_pred_context_switchable_interp() functuion.
...
Change-Id: I67a45a41312ca0efd8fe00ccd8bdc0f97675d09f
2013-12-09 17:02:38 -08:00
hkuang
ff2c96be1f
Implenment on demand border extension. In place extend
...
the border now. Next commit will totally remove the border.
Change-Id: Ic1e1ca9cc34f81c688715b3948689b47df63a151
2013-12-09 16:44:08 -08:00
Jingning Han
f92b5842bf
Merge "Full range motion search for regular block sizes"
2013-12-09 16:12:35 -08:00
Dmitry Kovalev
08c48ddc01
Renaming comp_pred_mode to reference_mode.
...
Change-Id: I83ffed2b1878a35ac35f07f9ee74309adc9c7b11
2013-12-09 15:13:34 -08:00
Dmitry Kovalev
347df4ce55
Merge "Renaming vp9_get_pred_context_tx_size() function."
2013-12-09 15:10:49 -08:00
Dmitry Kovalev
2c3120274a
Removing max_uv_txsize_lookup lookup table.
...
Adding get_uv_tx_size_impl() with tx size selection logic, rewriting
get_uv_tx_size().
Change-Id: I3ecb108059a41be227a8c89a0710bd174f508951
2013-12-09 14:03:23 -08:00
Dmitry Kovalev
a19d694f09
Merge "Removing BLOCK_TYPES and adding PLANE_TYPES constant instead."
2013-12-07 02:20:41 -08:00
Dmitry Kovalev
cb92f4f042
Renaming vp9_get_pred_context_tx_size() function.
...
Change-Id: Ia6d6f4dfb1fd1ec0f8ba53796b59a802e9d7881d
2013-12-06 15:31:06 -08:00
Dmitry Kovalev
b6e5bb27c9
Merge "Renaming reference mode context calculation function."
2013-12-06 14:22:47 -08:00
Jingning Han
b295092b8f
Full range motion search for regular block sizes
...
Add a full range motion search for regular block sizes. This runs
exhaustive search within the given reference area. This commit further
optimizes the search process by combining 4 points test into one
pipeline, which gives 30% speed-up as compared to run each individual
point at a time.
This full range search serves as a best possible motion search reference.
When replacing the diamond search with full range search, the speed 0
runtime of bus CIF at 2000 kbps goes from 153872ms to 623051ms. The
compression performance compared to speed 0 setting gains 0.585% for
derf set.
Change-Id: Ieef1225216b0b86b4ac4872fa7fb9e18bf2eabb3
2013-12-06 12:24:53 -08:00
Dmitry Kovalev
2da30a96d4
Merge "Removing duplicated C code from vp9_loopfilter_filters.c file."
2013-12-06 12:13:24 -08:00
Dmitry Kovalev
63963f51ef
Renaming reference mode context calculation function.
...
Renames:
vp9_get_pred_context_comp_inter_inter => vp9_get_reference_mode_context
vp9_get_pred_prob_comp_inter_inter => vp9_get_reference_mode_prob
Change-Id: I3bbb69481e6b0c848028667c9269f567f293d3bd
2013-12-06 11:23:01 -08:00
Dmitry Kovalev
d6b159d4a6
Removing BLOCK_TYPES and adding PLANE_TYPES constant instead.
...
Change-Id: Ic3bb862e93aedf6a489a33ea6f7e5097d96855ee
2013-12-06 10:54:00 -08:00
Dmitry Kovalev
cf4dfdc8e7
Merge "Moving vp9_tree_probs_from_distribution() to encoder."
2013-12-06 10:18:30 -08:00
Dmitry Kovalev
8eac2ca840
Merge "Renaming constants."
2013-12-06 09:55:02 -08:00
Dmitry Kovalev
5be34ba80f
Merge "vp9_get_pred_context_intra_inter() clean up."
2013-12-06 09:14:36 -08:00
Adrian Grange
de2046275d
Merge "Remove redundant calls to vp9_update_mode_info_border"
2013-12-06 08:59:47 -08:00
Dmitry Kovalev
4ac6a2552b
Moving vp9_tree_probs_from_distribution() to encoder.
...
Writing custom coeff branch count calculation (which is much clearer) in
adapt_coef_probs() function. Removing vp9_treecoder.c file.
Change-Id: I8880fb7a39996c8bcf6cd0acf9898a8c712ba91f
2013-12-05 18:13:26 -08:00
Dmitry Kovalev
377fa8aff8
Renaming PREV_COEF_CONTEXTS to COEFF_CONTEXTS.
...
Also adding BAND_COEFF_CONTEXTS macro to simplify for loop logic.
Change-Id: I12a78a49cf1addf81e6b3fe2a3736ec2b79bd79e
2013-12-05 17:08:06 -08:00
Dmitry Kovalev
6fd71e1b09
vp9_get_pred_context_intra_inter() clean up.
...
Renaming:
vp9_get_pred_context_intra_inter => vp9_get_intra_inter_context
vp9_get_pred_prob_intra_inter => vp9_get_intra_inter_prob
Change-Id: I2c1affea2e84f4e616137c6df82adb11c7845781
2013-12-05 17:01:03 -08:00
Dmitry Kovalev
f7396f3394
Merge "Removing vp9_default_coef_probs.h file."
2013-12-05 16:44:26 -08:00
Dmitry Kovalev
0d4b8d7e43
Renaming constants.
...
NUM_YV12_BUFFERS => FRAME_BUFFERS
ALLOWED_REFS_PER_FRAME => REFS_PER_FRAME
NUM_REF_FRAMES_LOG2 => REF_FRAMES_LOG2
NUM_REF_FRAMES => REF_FRAMES
NUM_FRAME_CONTEXTS_LOG2 => FRAME_CONTEXTS_LOG2
NUM_FRAME_CONTEXTS => FRAME_CONTEXTS
Change-Id: I4e1ada08f25d8fa30fdf03aebe1b1c9df0f87e63
2013-12-05 16:23:09 -08:00
Dmitry Kovalev
2b95a05bf6
Removing duplicated C code from vp9_loopfilter_filters.c file.
...
Change-Id: I299b621fca1c8ff5d296afde9698cdcccfecaf3f
2013-12-05 15:49:57 -08:00
Adrian Grange
93d8a3fd29
Remove redundant calls to vp9_update_mode_info_border
...
Removed calls to vp9_update_mode_info_border since
they immediately followed code that initialized the
entire buffer to 0.
Change-Id: Ife06794daa20439a0b607a83a87f88df59afac40
2013-12-05 15:02:32 -08:00
Dmitry Kovalev
6df9ec52a0
Merge "Cleaning up vp9_get_pred_context_tx_size() function."
2013-12-05 09:59:00 -08:00
Tero Rintaluoma
047b0b01bb
Fix show existing frame
...
- Disable mode info update in case where current frame is coded
as "show existing frame".
- Should fix issue 676.
Change-Id: Ibee681850eb307f982da6528d3e31cb94f881c08
2013-12-05 12:10:10 +02:00
Frank Galligan
7ecf3bc91c
Fix ref count decrement code.
...
Buffer 0 would never be decremented, so it could only be used
once.
Change-Id: I605d99fa2a513eadae6a0e230161729880653282
2013-12-04 22:21:00 -08:00
Dmitry Kovalev
5eeffc9fc5
Cleaning up vp9_get_pred_context_tx_size() function.
...
Change-Id: Ia6ef876e3d1e66b2182a9c0bce3fd758691cd381
2013-12-04 21:35:30 -08:00
Dmitry Kovalev
a1123538a5
Moving vp9_token from common to encoder.
...
Change-Id: I40a070c353663e82c59e174d7c92eb84f72ed808
2013-12-04 19:36:58 -08:00
Frank Galligan
8363349b84
Merge "Fix the initial references to frame buffers."
2013-12-04 19:26:40 -08:00
Dmitry Kovalev
4afd141a05
Removing vp9_default_coef_probs.h file.
...
Moving all probability tables from removed file to vp9_entropy.c.
Change-Id: I12846f1da778c3016d96b82e53384d4634883430
2013-12-04 17:04:35 -08:00
Dmitry Kovalev
cf8e3d2c5c
Merge "Cleaning up vp9_dec_build_inter_predictors_sb function."
2013-12-04 16:57:54 -08:00
Frank Galligan
9ed616a56c
Fix the initial references to frame buffers.
...
The old code would start in a mixed state, where all the reference
frames were pointing to frame buffer 0, but the reference counts
were 0. This is why we needed special code for the first frame.
Change-Id: I734961012917654ff8c0c8b317aac00ab75ded1a
2013-12-04 16:53:18 -08:00
Dmitry Kovalev
3712b58c2f
Merge "Cleaning up vp9_entropy.h file."
2013-12-04 16:46:41 -08:00
Dmitry Kovalev
c6ca5c5ad9
Compact formatting default_coef_probs_{4x4, 8x8, 16x16, 32x32}.
...
Change-Id: If40b930431766d5179b9769509b5e4ca1628e9cc
2013-12-04 15:45:28 -08:00
Dmitry Kovalev
da2da79012
Merge "Formatting vp9_pareto8_full array."
2013-12-04 12:22:50 -08:00
Dmitry Kovalev
beb35aba19
Cleaning up vp9_dec_build_inter_predictors_sb function.
...
Using get_plane_block_size() instead of manipulation with subsampling
values, calculating all required values only once without redundant calls
to b_width_log2().
Change-Id: I00303f2a0926f9c4cb17f34591adda60615f8919
2013-12-04 12:11:01 -08:00
Yunqing Wang
f6582d6928
Revert "Simplify mask checking in loop filters"
...
Jingning saw bitstream change with this patch. It could be true
that (mask_16x16_0 & 1) is 1, but (mask_16x16_1 & 1) is 0 in some
edge cases.
This reverts commit 8f05e70340
.
Change-Id: I0a529435ce816a1e14653eb510d5090de276070a
2013-12-04 11:31:19 -08:00
Dmitry Kovalev
1470789927
Merge "Moving eob array to the encoder."
2013-12-04 10:58:02 -08:00
Yunqing Wang
920a074e89
Merge "Improve idct16x16: _256_add_sse2(x1.107)&_10_add_sse2(x1.012)"
2013-12-04 08:50:51 -08:00
Dmitry Kovalev
ff6d6a9f07
Formatting vp9_pareto8_full array.
...
Change-Id: Ic7f47a8d233daf5e61e82092865837ea4eda4095
2013-12-03 18:49:19 -08:00
Dmitry Kovalev
f00d157c12
Moving eob array to the encoder.
...
In the decoder we don't need to save eobs, we can pass eob as an argument.
That's why removing eob arrays from VP9Decompressor and TileWorkerData,
and moving eob pointer from macroblockd_plane to macroblock_plane.
Change-Id: I8eb919acc837acfb3abdd8319af63d1bbca8217a
2013-12-03 17:59:32 -08:00
Dmitry Kovalev
8e89e2f2e0
Cleaning up vp9_entropy.h file.
...
Renaming constants for consistency:
DCT_VAL_CATEGORY1 => CATEGORY1_TOKEN
DCT_VAL_CATEGORY2 => CATEGORY2_TOKEN
DCT_VAL_CATEGORY3 => CATEGORY3_TOKEN
DCT_VAL_CATEGORY4 => CATEGORY4_TOKEN
DCT_VAL_CATEGORY5 => CATEGORY5_TOKEN
DCT_VAL_CATEGORY6 => CATEGORY6_TOKEN
DCT_EOB_TOKEN => EOB_TOKEN
DCT_EOB_MODEL_TOKEN => EOB_MODEL_TOKEN
MAX_ENTROPY_TOKENS => ENTROPY_TOKENS
Moving constants:
INTER_MODE_CONTEXTS from vp9_entropy.h to vp9_blockd.h.
EOSB_TOKEN from vp9_entropy.h to vp9_tokenize.h
Change-Id: I5fcbf081318e1d365792b6d290a930c6cb0f3fc2
2013-12-03 17:23:03 -08:00
Dmitry Kovalev
09577b8c8d
Merge "Removing dummy assignments."
2013-12-03 10:59:34 -08:00
Abo Talib Mahfoodh
e4419ab691
Improve idct16x16: _256_add_sse2(x1.107)&_10_add_sse2(x1.012)
...
The performance gain of idct16x16_10_add_sse2 function is not
noticeable. However since both functions use the IDCT16_1D,
idct16x16_10_add_sse2 should be modified as well.
Tested with: park_joy_420_720p50.y4m
Change-Id: I02b957e36fcf997c677d15baf496533895271bff
2013-12-02 21:08:56 -05:00
Yunqing Wang
8f182a1cac
Merge "improve vp9_idct32x32_34(x1.472)&1024(x1.032)_add_sse2"
2013-12-02 15:10:05 -08:00
Yunqing Wang
37e68aba55
Merge "Simplify mask checking in loop filters"
2013-12-02 12:06:26 -08:00
Dmitry Kovalev
862c22cf7d
Merge "Moving token-encoding related stuff from common to encoder."
2013-12-02 10:32:04 -08:00
Yunqing Wang
8f05e70340
Simplify mask checking in loop filters
...
Considering a horizontal edge, if mask_16x16 is 1 for an even-
indexed 8x8 block, then mask_16x16 is 1 for next 8x8 block in
same row. Similiar to a verticle edge, if mask_16x16 is 1 for
an even-rowed 8x8 block, then mask_16x16 is 1 for the 8x8 block
right below it in next raw. Based on that, the mask_16x16 checking
can be simplified to save cycles. The corresponding 8-pixel
vp9_mb_lpf_horizontal_edge code can also be removed.
Change-Id: Ic3fe7a5674322239208cbe2731dc3216ce2084f3
2013-11-27 14:10:57 -08:00
Dmitry Kovalev
d83d61d942
Moving reaster_block_offset{,_int16} from vp9_blockd.h to vp9_rdopt.h.
...
Change-Id: I5a5888d4639cc6b7eb266be47581dd15ba08c91e
2013-11-27 12:57:21 -08:00
Dmitry Kovalev
f9da823216
Moving token-encoding related stuff from common to encoder.
...
Change-Id: I0e59d320407b3bed0ba3622a7b29975f6fad7ebf
2013-11-27 11:27:57 -08:00
Dmitry Kovalev
e2f1d02eb3
Merge "Moving mode encodings from common to encoder + cleanup."
2013-11-27 11:00:54 -08:00
Yaowu Xu
e9c19617bf
Merge "vp9_short_fdct32x32_rd vp9_short_fdct32x32 optimized for AVX2"
2013-11-27 10:27:32 -08:00
Dmitry Kovalev
d3a2e55af4
Removing qcoeff buffers from the decoder.
...
We only need qcoeff buffers in the encoder. Reducing TileWorkerData struct
and VP9Decompressor struct sizes by 24K.
Change-Id: Id148868461f7ffa3d3dd634b371503ae9c57e207
2013-11-26 18:52:10 -08:00
Dmitry Kovalev
fc3c3303f1
Removing dummy assignments.
...
Change-Id: I10d1a4bcac751a982d9dd135f019e3a4d92f8522
2013-11-26 15:35:11 -08:00
Dmitry Kovalev
f4bf712fbb
Moving mode encodings from common to encoder + cleanup.
...
Change-Id: I248ccb1532e2cd95314d0b95108f2c2e71cf084f
2013-11-26 14:53:17 -08:00
Yaowu Xu
b60293e1ce
Merge "Amended some comments for clarity"
2013-11-26 14:32:02 -08:00
Frank Galligan
b4874e2c82
Fix 16 wide neon horz loopfilter.
...
Multiply by 3 was on 8bit vectors when it should have been on
16bit vectors.
Change-Id: I248c1429b3134dfd171dfab0ebb109fd2437e1fc
2013-11-26 10:02:40 -08:00
Yunqing Wang
7a5fd6a1bf
Merge "Do vertical loopfiltering in parallel"
2013-11-26 09:35:14 -08:00
Abo Talib Mahfoodh
f97d91ab67
improve vp9_idct32x32_34(x1.472)&1024(x1.032)_add_sse2
...
vp9_idct32x32_34_add_sse2:
speedup: 1.472
IDCT32_1D_34 and MULTIPLICATION_AND_ADD_2 are optimized
based on the fact that Only upper-left 8x8 has
non-zero values.
vp9_idct32x32_1024_add_sse2:
speedup: 1.032
Tested with: park_joy_420_720p50.y4m
Change-Id: I8670ce547552b48695049de298e2fc46ce28dfbc
2013-11-26 12:28:26 -05:00
Dmitry Kovalev
5488da280d
Merge "Moving mv entropy encodings calculation to the encoder side."
2013-11-25 19:15:21 -08:00
Dmitry Kovalev
56d048c412
Moving mv entropy encodings calculation to the encoder side.
...
Moved arrays:
vp9_mv_joint_encodings
vp9_mv_class_encodings
vp9_mv_class0_encodings
vp9_mv_fp_encodings
Change-Id: Iaf5008c579fcbd6d77fdd81d1aef8c71b5f308b7
2013-11-25 16:36:28 -08:00
Dmitry Kovalev
7ba7a5f817
Merge "Removing redundant call of vp9_init_mbmode_probs()."
2013-11-25 16:08:42 -08:00
Dmitry Kovalev
cfc1f91c9f
Merge "Moving {left, right}_block_mode to vp9_blockd.h."
2013-11-25 10:59:24 -08:00
Dmitry Kovalev
e8af3db88a
Merge "Renaming COMPPREDMODE_TYPE enum and its members."
2013-11-25 10:59:08 -08:00
Yaowu Xu
dd69337e6e
Amended some comments for clarity
...
Change-Id: I31c3908ba394095deb5d3a5d7b7c9b2b5328c3e8
2013-11-25 10:55:01 -08:00