0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 13:08:50 +02:00
Commit Graph

263 Commits

Author SHA1 Message Date
jp9000
171f0e3d26 deps-libff: Offset start of stream by start pts
Now that we're using the timestamps from the stream for playback,
certain types of streams and certain file formats will not start from a
pts of 0.  This causes the start of the playback to be delayed.  This
code simply ensures that there's no delay on startup.  This is basically
the same code as used in FFmpeg itself for handling this situation.
2015-07-04 16:25:37 -07:00
John Bradley
6c4be20932 deps-libff: Fix pts diffs being adjusted wrongly
Removed code where if a PTS diff was greater than a certain
threshold it was forced to the previous PTS diff.  This breaks
variable length frame media like GIF.
2015-05-13 11:12:10 -05:00
Jim
ee284a56ac Merge pull request #424 from fryshorts/bsd-build-fixes
BSD build fixes
2015-05-05 04:46:16 -07:00
fryshorts
a02f2905b8 deps-jansson: Enable -fPIC for non-gcc compilers
Always use -fPIC when not on WIN32 or APPLE and not just with gcc.
This allows for building obs with clang on linux and FreeBSD
without explicitly specifying -fPIC as compiler flag to cmake.
2015-05-04 19:32:23 +02:00
GoaLitiuM
1e241bd24f jansson: Fix integer and real value formatting with VS2015
This is related to CRT changes in VS2015. All printf related functions
are now defined inline, which breaks the CMake's link time checking.
2015-05-04 19:33:54 +03:00
GoaLitiuM
e251d26560 w32-pthreads: Fix build errors with VS2015 2015-05-04 19:33:54 +03:00
fryshorts
42a9a0af3e deps-glad: Only link to libdl on Linux
Only link to libdl when on Linux. FreeBSD for example has this built
into their libc.
2015-05-03 14:38:24 +02:00
kc5nra
091a002c37 deps-libff: Add extensions to format description 2015-04-26 22:29:11 -05:00
Ethan Lee
fd4f2e29aa Buildfix for older FFmpeg versions (F20 RPMFusion) 2015-04-01 06:50:22 -04:00
kc5nra
0976126ebb deps-libff: Add ff codec/format utility functions
This adds utility functions for determining which
codecs and formats are supported by loaded FFMpeg
libraries.  This includes validating the codecs that
a particular format supports.
2015-03-30 17:30:29 -05:00
kc5nra
9f301cda94 deps-libff: Add extern "C" to all headers 2015-03-30 17:26:15 -05:00
kc5nra
36820a05e0 deps-libff: Link FFmpeg libraries 2015-03-30 17:26:15 -05:00
kc5nra
8effe2c635 deps-libff: Send NULL frame to callback if EOF
A null frame send to the frame callback signals
the end of media being played.  Null frames are not
sent for looped media
2015-03-24 00:18:48 -05:00
kc5nra
94e58057fd deps-libff: Fix sequence-point warning
Silly code that pre-incremented a value while also assigning
it to the same value.
2015-03-23 22:28:08 -05:00
kc5nra
f1f5484b16 deps-libff: Skip further decode refresh if aborted
Skip decode refresh scheduling if the abort flag is
set when the timer fails to start.  This avoids extraneous
refresh scheduling when tearing down the decoders.
2015-03-23 22:16:39 -05:00
kc5nra
f47b02df3f deps-libff: Add proper ff_timer_init error checks 2015-03-23 22:16:39 -05:00
kc5nra
e868af285e deps-libff: Fix mingw using wrong pthread header
When compiling under mingw it was using the w32-pthreads
instead of the shared mingw pthread library.
2015-03-23 22:16:39 -05:00
kc5nra
798f38cf72 deps-libff: Fix if hw accel fails to load codec
Fixes a bug where get_format was overloaded by our own version
when forcing the codec to load with a HW decoder and not
reset to the original get_format if it failed to load.
2015-03-22 18:58:49 -05:00
John Bradley
aa8363bb87 deps-libff: Fix other multithreaded image decoders
In the same manner that PNG doesn't appear to work properly
with multiple threads, TIFF, JPEG2000 and WEBP also appears
to not render correctly (use of FFmpeg's ff_thread_* routines)
if decode is called before the automatic thread detection
has returned a suggested thread count for the decoder.
2015-03-20 17:51:54 -05:00
John Bradley
c78fa63b47 deps-libff: Fix memory leak in ff_demuxer_reset
The reset method unnecessarily malloced a packet passed into
the packet buffer which does a dereferencing copy.
2015-03-20 17:14:23 -05:00
John Bradley
5465fcb4a2 deps-libff: Initialize FFmpeg network
If this is omitted and you use an input that requires the network
you get a warning message about future versions not automatically
doing this for you.
2015-03-19 14:40:24 -05:00
John Bradley
b2d5b47833 deps-libff: Remove extra whitespace 2015-03-19 14:40:24 -05:00
John Bradley
f8c38d1fcf deps-libff: Remove misleading comment 2015-03-19 14:40:24 -05:00
John Bradley
312d59da02 deps-libff: Fix comment formatting 2015-03-19 14:40:24 -05:00
John Bradley
3628d3402d deps-libff: Add frame dropping
This, if set, instructs the decoders to drop
frames if a specific timing window is not met.
2015-03-19 14:40:24 -05:00
John Bradley
6b36d39345 deps-libff: Add clock chaining to packets/frames
This attaches clocks to packets and frames and defers
the start time until that particular frame is presented.
Any packets/frames in the future with the same clock
will reference that start time.

This fixes issues when there are multiple start times
in a large buffer (looped video/images/audio) and different
frames need different reference clocks to present correctly.
2015-03-19 14:40:24 -05:00
John Bradley
a5e0462a88 deps-libff: set master clock sync type based on default stream 2015-03-19 14:40:24 -05:00
John Bradley
6e42f38386 deps-libff: Add master/slave deferred clock methods
Enables clocks to wait if the main sync clock has not been started yet.  An example of this is a video stream (video/audio) being synced to the video clock.  If an audio frame gets produced before the video clock has started it will wait.
2015-03-19 14:40:19 -05:00
John Bradley
5b3190593c deps-libff: Add reference counting to clock
Add referencing counting to determine when to release a clock Due to no fixed ownership of clocks (packets, frames, decoders and  refresh thread all may own a clock at some point).
2015-03-19 11:56:00 -05:00
kc5nra
164cbeeede deps-libff: Add atomic long inc/dec functions 2015-03-19 11:56:00 -05:00
John Bradley
47783f26c7 deps-libff: Abort timer thread instead of cancelling 2015-03-19 11:56:00 -05:00
John Bradley
7a4a5e3fad deps-libff: Move timer callback outside of lock 2015-03-19 11:55:51 -05:00
John Bradley
d9fe44f021 deps-libff: Only sleep if the timed wait didn't expire 2015-03-19 11:55:43 -05:00
John Bradley
de574e99e3 deps-libff: Fix bug where rel time was used instead of abs
The bug was undetected because it accidentally fell into an error case that slept the correct amount of time.  pthread_cond_timedwait takes an absolute time in the future to wait until.  The value we were passing was always in the past so it was immediately failing with a TIMEDOUT error code.
2015-03-19 11:55:23 -05:00
John Bradley
2b3d82aeac deps-libff: Add flag whether a decoder is hardware accelerated
This lets the decoder make decisions based on whether it is a hardware decoder or not.  Specifically, hardware decoders are more strict as to which frames can be dropped in an h264 stream.
2015-03-19 11:54:53 -05:00
John Bradley
b91a98ed44 deps-libff: Refactor AVPacket into ff_packet
This also replaces AVPacketList with ff_packet_list.
2015-03-19 11:54:51 -05:00
John Bradley
a7e81d6f3f deps-libff: (unsigned char *) -> (uint8_t *) cast fix 2015-03-19 11:53:13 -05:00
John Bradley
361522198e deps-libff: Workaround to PNG multithreaded bug in ffmpeg
FFMpeg has an issue where png decoding will not correctly
begin until its optimal-thread-detection finishes in
multi-threaded mode. This unfortunately is after decoding
has begun.
2015-03-10 12:55:53 -05:00
John Bradley
b3fddc9f53 obs-ffmpeg: Support interrupt callbacks for both av input styles 2015-03-10 12:47:08 -05:00
kc5nra
5d6a4e5172 deps-libff: Add libff library to deps
This library wraps the ffmpeg library and adds some utility
functions and types.
2015-03-09 21:22:32 -05:00
jp9000
0c1d121ff2 Remove various unused variables
Unused variables detected by mingw
2015-02-09 03:49:13 -08:00
martell
119c06198a deps-glad: don't build with -fPIC on windows
-fPIC generates unwanted warnings in mingw on windows.
2015-02-09 03:41:47 -08:00
martell
e869a914b0 cmake: exclude w32-pthreads for mingw-w64
mingw-w64 has its own pthreads library
2015-02-08 06:40:15 -08:00
jp9000
5d9526d98c Add ipc-util static library for IPC functions
Originally I made the "win_pipe" stuff for named pipes on windows but it
was argued that it should be available to all modules and
programs/libraries that the modules might communicate with.

It cannot really be put in to libobs due to the fact that there would
hypothetically be things unrelated to libobs that might want to use it,
so I felt the best option was just to create a simple static library
specific for interprocess communication.

Non-windows versions of these functions are still yet to be implemented.
2014-12-08 01:53:53 -08:00
BtbN
3b26db389d Fix Jansson dependency importing 2014-07-17 18:13:25 +02:00
BtbN
34cf2b0528 Add glad headers to CMakeLists 2014-07-10 14:36:56 +02:00
BtbN
6d8146f6f0 Honor QUIET argument in FindJansson 2014-06-18 06:24:21 +02:00
BtbN
2cc24dccab Add support for external jansson 2014-05-24 15:47:03 +02:00
BtbN
ce542525fc Fix dependency on win32-pthreads 2014-05-08 14:43:16 +02:00
BtbN
b586240fa0 Stop forcing parameters on jansson. Modify their CMakeLists directly instead 2014-04-20 17:51:06 +02:00
BtbN
afd8b63687 Fix w32-pthreads build and string handling 2014-04-20 17:51:05 +02:00
jp9000
2faef6f098 Fix jansson_config.h issue 2014-04-19 21:32:02 -07:00
jp9000
903287a3df Add 'SHARED' to add_library in w32-pthreads cmake 2014-04-19 21:08:38 -07:00
jp9000
92812ba313 Make w32-pthreads and jansson shared libraries 2014-04-19 20:33:45 -07:00
BtbN
334792a62c Add glad opengl loader 2014-04-15 22:19:40 +02:00
jp9000
fdd5b2b3b6 Fix a few warnings with jansson 2014-04-14 13:46:07 -07:00
jp9000
92522d1886 Implement RTMP module (still needs drop code)
- Implement the RTMP output module.  This time around, we just use a
   simple FLV muxer, then just write to the stream with RTMP_Write.
   Easy and effective.

 - Fix the FLV muxer, the muxer now outputs proper FLV packets.

 - Output API:
   * When using encoders, automatically interleave encoded packets
     before sending it to the output.

   * Pair encoders and have them automatically wait for the other to
     start to ensure sync.

   * Change 'obs_output_signal_start_fail' to 'obs_output_signal_stop'
     because it was a bit confusing, and doing this makes a lot more
     sense for outputs that need to stop suddenly (disconnections/etc).

 - Encoder API:
   * Remove some unnecessary encoder functions from the actual API and
     make them internal.  Most of the encoder functions are handled
     automatically by outputs anyway, so there's no real need to expose
     them and end up inadvertently confusing plugin writers.

   * Have audio encoders wait for the video encoder to get a frame, then
     start at the exact data point that the first video frame starts to
     ensure the most accrate sync of video/audio possible.

   * Add a required 'frame_size' callback for audio encoders that
     returns the expected number of frames desired to encode with.  This
     way, the libobs encoder API can handle the circular buffering
     internally automatically for the encoder modules, so encoder
     writers don't have to do it themselves.

 - Fix a few bugs in the serializer interface.  It was passing the wrong
   variable for the data in a few cases.

 - If a source has video, make obs_source_update defer the actual update
   callback until the tick function is called to prevent threading
   issues.
2014-04-07 22:00:10 -07:00
BtbN
45ec80fb7d Full rewrite of all CMakeLists
CMake now works on all platforms
2014-01-24 18:56:32 +01:00
jp9000
b404fb7c75 Update jansson subtree to latest revision 2014-01-20 08:49:48 -07:00
jp9000
aead95f5e3 converted project to vs2013, removed 2010 support (ugh) 2013-12-14 16:01:30 -07:00
jp9000
d8b49034c9 added jansson to the main project 2013-11-22 10:02:57 -07:00
jp9000
12790a40b5 Subtree merged in deps/jansson 2013-11-21 16:04:11 -07:00
jp9000
dc38a1b8fc added a 'deps' directory and moved w32-pthreads into it 2013-10-28 06:20:37 -07:00