Commit graph

1901 commits

Author SHA1 Message Date
Thiago Santos
24b523e129 appsrc: Do not override buffer caps if appsrc caps is null
Make appsrc not set caps on buffers when its own caps is NULL.

This avoids calling make_metadata_writable on all buffers and
prevents losing buffer caps in case we are not replacing it
with something meaningful.

https://bugzilla.gnome.org/show_bug.cgi?id=630353
2010-09-23 08:23:47 -03:00
Edward Hervey
6ecbdab1fe discoverer: Fixup DiscovererResult handling
This was a leftover from the changes from a flag to an enum
2010-09-22 12:57:22 +02:00
Edward Hervey
3912e59488 discoverer: We don't need the signals from the queues 2010-09-22 12:10:24 +02:00
David Schleef
69077eddd8 gst-libs: build pbutils after video
Because pbutils now depends on video.
2010-09-22 01:50:21 -07:00
Stefan Kost
784d7be363 discoverer: fix docs
While the doc parser allows for certain variation, it is a good idea to not
use random characters here and there, but try to stick to the little markup
syntax there is.
2010-09-20 21:04:48 +03:00
Edward Hervey
f2d522670e discoverer: Fix debug statement.
Fixes build on macosx
2010-09-20 16:45:32 +02:00
Edward Hervey
30b3cf8823 pbutils: New Discoverer utility
Fixes #625944
2010-09-20 13:11:42 +02:00
Sebastian Dröge
0cb380e710 sdp: Fix ACCEPTABLE_CHAR() macro to work with signed and unsigned chars 2010-09-17 11:46:05 +02:00
Sebastian Dröge
3328f89c49 Revert "sdp: Remove useless check in macro"
This reverts commit e6a041b69f.

It's not a useless check, the signedness of "char" and "gchar" is
defined by the ABI.
2010-09-17 11:44:29 +02:00
Edward Hervey
e6a041b69f sdp: Remove useless check in macro
A signed char is always < 128. Fixes a warning on macosx build.
2010-09-17 10:43:04 +02:00
Wim Taymans
cc49e8d715 xoverlay: G_GUINTPTR_FORMAT is since 2.22
Don't rely on too new symbols, we only depend on 2.20.
2010-09-16 19:30:59 +02:00
Tim-Philipp Müller
e98814c91e docs: add Since: comment to docs for new GST_VIDEO_FORMAT_UYVP 2010-09-15 15:20:25 +01:00
Sebastian Dröge
7ac1938f0f video: Add a destroy notify parameter to gst_video_convert_frame_async()
Binding generators apparently need this as they can't really know
that the callback is guaranteed to be called exactly once and that
the user_data can be freed at the end of it.
2010-09-15 11:26:48 +02:00
David Schleef
6dc02137fb xoverlay: Add guintptr versions of functions
And deprecate the gulong versions.  This is to support platforms
where sizeof(unsigned long) < sizeof(void *).  Fixes #627565.

API: Add gst_x_overlay_set_window_handle()
API: Deprecate: gst_x_overlay_set_xwindow_id()
API: Add gst_x_overlay_got_window_handle()
API: Deprecate: gst_x_overlay_got_xwindow_id()
API: Add GstXOverlay::set_window_handle()
API: Deprecate: GstXOverlay::set_xwindow_id()
2010-09-15 00:10:23 -07:00
David Schleef
1a75dede56 video: Add UYVP, 10-bit 4:2:2 2010-09-14 12:33:21 -07:00
Sebastian Dröge
6407101c53 video: Add async variant of the convert frame function
API: gst_video_convert_frame_async()
2010-09-14 08:42:44 +02:00
Sebastian Dröge
a30371ab15 video: Strip framerate from the target caps
There will always be only a single output buffer and if the
target caps have a different framerate than the input there
will be a negotiation error during conversion.
2010-09-14 08:42:44 +02:00
Sebastian Dröge
b54c4b486a video: Refactor convert_frame a bit and fix some minor memory leaks in error cases 2010-09-14 08:42:44 +02:00
Edward Hervey
349a76ed19 video: Add new method for converting a video frame
https://bugzilla.gnome.org/show_bug.cgi?id=629157
2010-09-14 08:42:43 +02:00
Wim Taymans
94b3f3d517 sdp: remove leftover g_print 2010-09-10 18:42:16 +02:00
Wim Taymans
f5cbb6047f sdp: add methods to convert between uri and message
Add methods to convert between uri and sdpmessages, loosly based on
http://tools.ietf.org/html/draft-fujikawa-sdp-url-01

API: GstSDPMessage::gst_sdp_message_parse_uri
API: GstSDPMessage::gst_sdp_message_as_uri
2010-09-10 17:58:53 +02:00
Wim Taymans
24226284b8 baseaudio: avoid taking extra ref on sink/src
Don't take an extra ref on the sink and source because that creates a reference
cycle. Instead, use the invalidate method of the clock when the sink and source
are freed. This way, we don't call into the time function anymore after the
objects are disposed.
2010-09-07 18:12:38 +02:00
Wim Taymans
c7972692d3 audioclock: add a function to invalidate the clock
Add a function to invalidate the time function of a clock. Useful for when the
function becomes invalid.
2010-09-07 18:12:38 +02:00
Thiago Santos
d54ba93945 tag: exif: Adds mappings for new image ppi tags
Adds mappings for GST_TAG_IMAGE_HORIZONTAL/VERTICAL_PPI into
our exif lib

Tests included.

Fixes #626570
2010-09-07 10:07:29 -03:00
Thiago Santos
7d4bdbf5ce tags: Add GST_TAG_IMAGE_HORIZONTAL/VERTICAL_PPI tags
Adds new tags for representing the intended PPI of images/videos

API: GST_TAG_IMAGE_HORIZONTAL_PPI
API: GST_TAG_IMAGE_VERTICAL_PPI

Fixes #626570
2010-09-07 08:59:46 -03:00
Tim-Philipp Müller
b550eabdac rtp: improve basertpdepayload's error message when no input caps were set
This is pretty much an FAQ, so try to make the error message a bit
more helpful. Also, don't tell people to file a bug in bugzilla
about this (which is what happens if the default error message for
CORE_NEGOTIATION is used).
2010-09-06 18:19:44 +01:00
Wim Taymans
9fd1c48267 rtppayload: notify of first timestamp/seqnum
Notify of the first timestamp/seqnum pushed out by the payloader.

Fixes #612264
2010-09-06 13:15:41 +02:00
Leo Singer
fecb764e2f exiftag: Fix compiler warnings with old gcc versions
Old gcc complains about possibly uninitialized variables which
are always initialized before usage in reality. Fixes bug #628747.
2010-09-04 09:06:08 +02:00
Thijs Vermeir
3a04b08437 riff: add support for 2vuy
It is the apple alternative for Microsofts UYVY.
(http://ntta.szm.com/Tutors/FourCC.htm)
Only use the UYVY for the caps to enable support in other
gstreamer elements.

https://bugzilla.gnome.org/show_bug.cgi?id=627924
2010-08-25 19:12:21 +02:00
Thiago Santos
aa3abae744 configure: Add check for log2
Adds check for log2 and only use it in exif library if it is
available.
2010-08-25 11:19:31 -03:00
Sebastian Dröge
4915090e01 tag: Link to $(LIBM) for pow(), log2() and friends 2010-08-25 15:32:41 +02:00
Thiago Santos
5045c17751 tag: exif: Move some tags to their correct IFDs
Put some tags in their correct IFDs
2010-08-25 08:41:52 -03:00
Thiago Santos
0ea550b0cf tag: exif: Always write FlashPixVersion tag
FlashPixVersion is mandatory and constant. Write it always.
2010-08-25 08:39:38 -03:00
Thiago Santos
9c5f791a34 tag: exif: Adds flash tags mapping
Adds a mapping for GST_TAG_CAPTURING_FLASH_FIRED/_MODE to
the exif Flash tag.

Tests included.
2010-08-25 08:36:59 -03:00
Thiago Santos
ac361dcc3a tag: exif: More photography mappings
Adds mappings from:
GST_TAG_CAPTURING_EXPOSURE_PROGRAM -> ExposureProgram
GST_TAG_CAPTURING_EXPOSURE_MODE -> ExposureMode
GST_TAG_CAPTURING_SCENE_CAPTURE_TYPE -> SceneCaptureType
GST_TAG_CAPTURING_GAIN_ADJUSTMENT -> GainControl
GST_TAG_CAPTURING_WHITE_BALANCE -> WhiteBalance
GST_TAG_CAPTURING_CONTRAST -> Constrast
GST_TAG_CAPTURING_SATURATION -> Saturation

Also renames gst_tag_image_orientation_from_exif_value and
gst_tag_image_orientation_to_exif_value to remove the 'gst'
prefix and not including in the win32 defs.

Tests included.
2010-08-25 08:32:19 -03:00
Thiago Santos
cc8bd8bcec tag: exif: Add macros for the exif ids
Use macros for exif ids to avoid having those numbers spread
all over the code.
2010-08-24 22:27:04 -03:00
Thiago Santos
10d680b74d tag: exif: Adds photography tags mappings
Adds the following mappings for the exif helper:
* GST_TAG_CAPTURING_DIGITAL_ZOOM_RATIO -> DigitalZoomRatio
* GST_TAG_CAPTURING_FOCAL_LENGTH -> FocalLength
* GST_TAG_CAPTURING_SHUTTER_SPEED -> ExposureTime, ShutterSpeedValue
* GST_TAG_CAPTURING_FOCAL_RATIO -> FNumber, ApertureValue
* GST_TAG_CAPTURING_ISO_SPEED -> ISOSpeed, PhotographicSensitivity

Tests included.
2010-08-24 22:24:36 -03:00
Thiago Santos
57013ae63e tag: exif: Adds mapping for GST_TAG_APPLICATION_DATA
Adds mapping for GST_TAG_APPLICATION_DATA to the exif
'maker-note' tag.
2010-08-24 22:20:48 -03:00
Thiago Santos
421e1e05ff tag: Adds GST_TAG_CAPTURE_FLASH_FIRED/_MODE
Adds a new tag for informing if flash was used while
capturing an image and the flash mode selected by the
user during this capture

API: GST_TAG_CAPTURING_FLASH_FIRED
API: GST_TAG_CAPTURING_FLASH_MODE

https://bugzilla.gnome.org/show_bug.cgi?id=626651
2010-08-24 22:20:40 -03:00
Thiago Santos
5596c965fd tag: More photography related tags
API: GST_TAG_CAPTURING_EXPOSURE_PROGRAM
API: GST_TAG_CAPTURING_EXPOSURE_MODE
API: GST_TAG_CAPTURING_SCENE_CAPTURE_TYPE
API: GST_TAG_CAPTURING_GAIN_ADJUSTMENT
API: GST_TAG_CAPTURING_WHITE_BALANCE
API: GST_TAG_CAPTURING_CONTRAST
API: GST_TAG_CAPTURING_SATURATION

Fixes #626651
2010-08-24 22:16:37 -03:00
Thiago Santos
19cef39023 tag: Adds some basic photography tags
Adds the following basic photography tags.

API: GST_TAG_CAPTURING_SHUTTER_SPEED
API: GST_TAG_CAPTURING_FOCAL_RATIO
API: GST_TAG_CAPTURING_FOCAL_LENGTH
API: GST_TAG_CAPTURING_DIGITAL_ZOOM_RATIO
API: GST_TAG_CAPTURING_ISO_SPEED

Fixes #626651
2010-08-24 22:05:20 -03:00
Sebastian Dröge
c30ad57e86 video: Fix component width for NV12/NV21
Both have width/2 as component width for the chroma planes.
2010-08-24 10:03:04 +02:00
American Dynamics
1f19649695 basertpdepay: don't clear the discont flag too early
Set the discont flag when we receive a DISCONT buffer and only clear the discont
state when we pushed out a DISCONT buffer.

Fixes #626869
2010-08-18 12:43:48 +02:00
Tim-Philipp Müller
c3a519494b docs: fix typo in appsink docs so function gets cross-referenced properly 2010-08-14 19:12:37 +01:00
Tim-Philipp Müller
e776699036 build: use new AG_GST_PKG_CONFIG_PATH m4 macro from common
Sets up a GST_PKG_CONFIG_PATH variable for use in Makefile.am
(avoids trailing ':' in PKG_CONFIG_PATH used).
2010-08-14 19:12:37 +01:00
Tim-Philipp Müller
b61b83376a introspection: set PKG_CONFIG_PATH so that our in-tree libs come first when calling scanner
When calling gobject-introspection scanner, make sure our own
freshly-built libs within the source tree (well, build dir) come
first in the PKG_CONFIG_PATH. May or may not help to make sure
that it doesn't pick up older external plugins-base libs (or
.gir files) from outside the source tree / build directory as
dependencies of the introspected lib instead of using the
stuff we just built in a sibling directory.

https://bugzilla.gnome.org/show_bug.cgi?id=623698
2010-08-14 19:11:48 +01:00
Stefan Kost
5ba7ca1642 appsrc: fix the classification.
Change "Src" into "Source" (we use that elsewhere). I did not keept "Src" as it
is quite unlikely that someone plugs appsrc by searching the registry by classification.
2010-08-12 18:16:20 +03:00
Thiago Santos
adcb6e642d tags: exif: Fix bug in inner ifd parsing
Do not use the result of inner ifd's parsing to increment
the current tag index. The reasons are:

1) The function returns a boolean.
2) The inner ifd's tags are in a separate table, so they shouldn't
interfere with its parent ifd table parsing.
2010-08-11 08:55:59 -03:00
Thiago Santos
c45bf80a0c tag: exif: Put ExifVersion in the correct IFD
ExifVersion is from the 'exif' ifd, not the 0th ifd.
2010-08-11 08:55:59 -03:00
Thiago Santos
5c5a200025 tag: exif: Refactor functions declaration
Use some macros to declare serialization/deserialization
functions prototypes.
2010-08-11 08:55:54 -03:00
Thiago Santos
f0d10d6375 tag: exif: Add another DateTime mapping
datetimes can also be represented by the 0x132 tag. Map it, too.
2010-08-11 08:51:28 -03:00
Thiago Santos
1547c2b9ce tag: exif: Fix bug on image-orientation parsing
Do not skip one extra tag when parsing image-orientation tags.
2010-08-10 11:30:04 -03:00
Sebastian Dröge
53f8149c90 exiftag: Compare with G_MAXUINT16 instead of -1
Fixes a compiler warning on the OS X buildbot.
2010-08-10 11:53:19 +02:00
Thiago Santos
61e11b0fc4 xmp: exif: Adds GST_TAG_APPLICATION_NAME mappings
adds xmp and exif helper library mappings for GST_TAG_APPLICATION_NAME
tag.
2010-08-09 18:04:08 -03:00
Thiago Santos
43e1f0474f tag: exif: Write ExifVersion tag
Write ExifVersion tag unconditionally when creating exif
buffers. Might help other applications parsing of this data.
2010-08-09 18:03:46 -03:00
Thiago Santos
4a42d3b0ce tags: exif: Fix inner tags offset rewriting
Fixes a bug that made exif helper lib fail to rewrite inner ifd tags
offsets when there were more than 1 inner ifd.
2010-08-09 17:51:35 -03:00
Sebastian Dröge
b296c96169 baseaudiosink/baseaudiosrc: Post CLOCK-LOST/CLOCK-PROVIDE when going to/from READY
Otherwise the clocks are redistributed every time the pipeline
goes to PAUSED, which is quite expensive.
2010-08-04 15:19:42 +02:00
Thiago Santos
f7ee816355 tag: xmp: Make xmp lib aware for the different tag types
Makes the xmp helper lib aware that the tags can be simple,
sequences or bags (there is still struct and alt, but those
aren't handled yet). Adding this info makes serialization
and deserialization more consistent.
2010-08-04 09:56:39 -03:00
Thiago Santos
b9573cc75d xmp: Add a new layer of indirection (GstXmpSchema)
Instead of storing all tags in a single hashtable, store them
grouped by schema in a GstXmpSchema, and add those to the toplevel
hashtable.
2010-08-04 09:56:39 -03:00
Thiago Santos
2760c96dfc tag: xmp: Make bag tags deserialization work correctly
If we find a bag of tags of type string in the xmp packet, we
should concat them, this is not the ideal approach, but at
least works for now as we don't know what type of tag it
is (simple, structure, seq, alt or bag)
2010-08-04 09:56:39 -03:00
Wim Taymans
f9404c0b27 ringbuffer: improve debugging 2010-08-04 10:33:32 +02:00
Wim Taymans
2304ff9095 ringbuffer: whitespace fixes 2010-08-04 10:33:32 +02:00
Thiago Santos
0c51c8209b tag: xmp: removing useless locking
Everything in the xmp helper lib is initiallized once and on a thread
safe way, and after that there are only reads going on, no more
writing. Based on that, drop the locking.
2010-08-01 06:53:28 -03:00
Tim-Philipp Müller
db5d418282 tag: initialize datetime variable in xmp tag parsing code
Fixes (correct) compiler warning on the OSX build bot.
2010-07-26 18:23:33 +02:00
Tim-Philipp Müller
5a0c2517ee pbutils: add compile time and runtime version checks for gst-plugins-base
So people can check what version of the gst-plugins-base libs they're
building against or linked against.

API: GST_PLUGINS_BASE_VERSION_MAJOR
API: GST_PLUGINS_BASE_VERSION_MINOR
API: GST_PLUGINS_BASE_VERSION_MICRO
API: GST_PLUGINS_BASE_VERSION_NANO
API: GST_CHECK_PLUGINS_BASE_VERSION
API: gst_plugins_base_version()
API: gst_plugins_base_version_string()
2010-07-26 17:25:15 +02:00
Thiago Santos
93f97277da tag: exif: Map GST_TAG_DATE_TIME
Adds mapping to the exif helper library for GST_TAG_DATE_TIME.
Tests included.

https://bugzilla.gnome.org/show_bug.cgi?id=594504
2010-07-26 12:00:31 -03:00
Thiago Santos
5e51a77df4 tag: xmp: Maps GST_TAG_DATE_TIME
Adds mapping for GST_TAG_DATE_TIME.
Tests included.

https://bugzilla.gnome.org/show_bug.cgi?id=594504
2010-07-26 12:00:30 -03:00
Sebastian Dröge
ed271ff809 baseaudiosink: Post clock-provide and clock-lost messages when going from/to PLAYING 2010-07-16 17:40:45 +02:00
Sebastian Dröge
e84c7f02b4 baseaudiosrc: Post clock-provide and clock-lost messages when going from/to PLAYING 2010-07-16 17:40:45 +02:00
Sebastian Dröge
f1ac770f1b baseaudiosink: Use new gst_audio_clock_new_full() 2010-07-16 17:40:45 +02:00
Sebastian Dröge
32b0b0aef9 baseaudiosrc: Use new gst_audio_clock_new_full() 2010-07-16 17:40:45 +02:00
Sebastian Dröge
8989ad93d9 audioclock: API: Add gst_audio_clock_new_full() with a GDestroyNotify for the user_data
Elements usually use their own instance as instance data but the
clock can have a longer lifetime than their elements and the clock
doesn't own a reference of the element.

Fixes bug #623807.
2010-07-16 17:40:17 +02:00
Tim-Philipp Müller
524c977c18 riff: add FLV4 fourcc and map it to video/x-vp6-flash
Fixes #623176.
2010-06-30 21:20:37 +01:00
Olivier Crête
2f8dc27e29 netbuffer: declare with G_DEFINE_TYPE for type safety
Fixes #623233.
2010-06-30 21:10:10 +01:00
Wim Taymans
2ced0a3d5d ringbuffer: check for ringbuffer state first
Check for the state of the ringbuffer before doing the checks of the other
buffer properties, when we're not started, we don't care about those values.
2010-06-25 17:21:57 +02:00
Thiago Santos
dbdfb71673 tag: Fix printf format string
Use %s for strings, not %d.
2010-06-24 08:42:50 -03:00
Thiago Santos
c774cdcff0 tag: xmp: Adds GST_TAG_IMAGE_ORIENTATION mapping
Adds GST_TAG_IMAGE_ORIENTATION mapping to xmp helper lib.
Tests included.
2010-06-23 12:03:47 -03:00
Thiago Santos
e327be5a96 tag: exif: Adds mapping for GST_TAG_IMAGE_ORIENTATION
Adds GST_TAG_IMAGE_ORIENTATION to the exif helper lib mapped tags.
Tests included.
2010-06-23 12:03:47 -03:00
Thiago Santos
a08c2ec760 tag: Use gst_tag_list_peek_string_index in vorbistag
Use _peek_string_index instead of _get_string_index to avoid
a string copy
2010-06-18 14:17:30 -03:00
Thiago Santos
4219a5ae5c tag: xmp: Init char variable for gps coordinates
Initialize char variable for gps coordinates deserialization to 0
to identify when it couldn't be parsed/found and error out.

Fixes #621509
2010-06-14 15:05:16 -03:00
Edward Hervey
3879c57b01 video: Fix unitialized variable.
yay macosx compilers :(
2010-06-14 14:13:16 +02:00
Sebastian Dröge
611d87ce7a appsrc: Return FALSE from the seek handler if no seek callback was set 2010-06-14 11:03:50 +02:00
Sebastian Dröge
506be85356 video: Re-add (but deprecated) GST_VIDEO_{RED,GREEN,BLUE}_MASK_1[56] 2010-06-13 08:20:13 +02:00
Martin Bisson
b8f330dea6 video.{c,h}: Fix an endianness bug fix.
This commit makes sure the endianness is ok for RGB/BGR 15/16 formats.
2010-06-12 13:51:27 +02:00
Martin Bisson
f5a690f860 video.{c,h}: Add support for RGB and BGR with 15 and 16 bits. 2010-06-12 13:51:27 +02:00
Edward Hervey
5e1cef7a5d gstexiftag: Fix unitialized variables
I hate thee macosx
2010-06-11 15:25:35 +02:00
Edward Hervey
f12a4e6ed6 gstexiftag: Fix debug statements 2010-06-11 08:47:27 +02:00
Edward Hervey
42dd1471f8 exiftag: Fix unitialized variable 2010-06-11 08:47:17 +02:00
Stefan Kost
a0b5bb5113 docs: fix gtk-doc warnings
Variable names in function prototypes in the headers should match the doc-
comment.
2010-06-10 20:36:32 +03:00
Edward Hervey
1d21ce0da2 riff: Add support for VP6F (On2 VP6 Flash variant) 2010-06-09 22:35:52 +02:00
Thiago Santos
ccfb6e3c02 tag: exif: Refactor byte-order handling
Only check for valid byte-order values when creating the
exif readers and writers
2010-06-09 16:28:43 -03:00
Thiago Santos
491d025530 tag: exif: Adds new geo-location tag mappings
Adds mappings for:
GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION
GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION
GST_TAG_GEO_LOCATION_MOVEMENT_SPEED
GST_TAG_GEO_LOCATION_ELEVATION

Does some refactoring in the code to reduce number of parameters
passed to functions

Tests included.
2010-06-09 16:26:43 -03:00
Thiago Santos
6b6a4e85ad tag: Adds basic exif tags support
Adds exif helper lib functions to parse exif buffers from/to
taglists. Exif is tipically used in jpeg images, but it can
also be embedded into TIFF, AVI and WAV formats.

Adds a couple function to handle exif in tiff header structures, that is how
exif is embedded in jpeg and (obviously) in tiff.

API: gst_tag_list_to_exif_buffer
API: gst_tag_list_to_exif_buffer_with_tiff_header
API: gst_tag_list_from_exif_buffer
API: gst_tag_list_from_exif_buffer_with_tiff_header

Fixes #614872
2010-06-09 16:26:36 -03:00
Sebastian Dröge
80cc85d218 video: Return TRUE in gst_video_format_is_gray() for Y800 and Y16 2010-06-08 11:01:44 +02:00
Martin Bisson
b0d15133d7 video: Add support for Y800 and Y16
Fixes bug #620441.
2010-06-07 08:17:55 +02:00
Wim Taymans
f562c8b290 appsrc: fix documentation string 2010-06-05 11:28:17 +02:00
Sebastian Dröge
a5c35621c3 Revert "baseaudiosink: Allocate and free the clock in NULL->READY and reverse"
This reverts commit cea2644ed8.

Many audio sink assume that they can create a clock in
the instance init function and it will be there forever
and not be cleared by the state change functions.
2010-06-03 13:44:40 +02:00
Sebastian Dröge
cea2644ed8 baseaudiosink: Allocate and free the clock in NULL->READY and reverse 2010-06-03 10:23:22 +02:00
Sebastian Dröge
61a65cda11 configure: Remove (now) useless check for cbrt 2010-05-28 08:27:29 +02:00
David Schleef
3edafbd0e5 interfaces: Use pow() instead of cbrt() for MSVC 2010-05-27 12:55:43 -07:00