Commit Graph

406 Commits

Author SHA1 Message Date
Anton Khirnov 9200514ad8 lavf: replace AVStream.codec with AVStream.codecpar
Currently, AVStream contains an embedded AVCodecContext instance, which
is used by demuxers to export stream parameters to the caller and by
muxers to receive stream parameters from the caller. It is also used
internally as the codec context that is passed to parsers.

In addition, it is also widely used by the callers as the decoding (when
demuxer) or encoding (when muxing) context, though this has been
officially discouraged since Libav 11.

There are multiple important problems with this approach:
    - the fields in AVCodecContext are in general one of
        * stream parameters
        * codec options
        * codec state
      However, it's not clear which ones are which. It is consequently
      unclear which fields are a demuxer allowed to set or a muxer allowed to
      read. This leads to erratic behaviour depending on whether decoding or
      encoding is being performed or not (and whether it uses the AVStream
      embedded codec context).
    - various synchronization issues arising from the fact that the same
      context is used by several different APIs (muxers/demuxers,
      parsers, bitstream filters and encoders/decoders) simultaneously, with
      there being no clear rules for who can modify what and the different
      processes being typically delayed with respect to each other.
    - avformat_find_stream_info() making it necessary to support opening
      and closing a single codec context multiple times, thus
      complicating the semantics of freeing various allocated objects in the
      codec context.

Those problems are resolved by replacing the AVStream embedded codec
context with a newly added AVCodecParameters instance, which stores only
the stream parameters exported by the demuxers or read by the muxers.
2016-02-23 17:01:58 +01:00
Alexandre Lision 4f979418c7 avfoundation: Simple capture
Originally based on the capture written by
Thilo Borgmann <thilo.borgmann@mail.de>.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-11-26 10:55:28 +01:00
Luca Barbato ce70f28a17 avpacket: Replace av_free_packet with av_packet_unref
`av_packet_unref` matches the AVFrame ref-counted API and can be used as
a drop in replacement.

Deprecate `av_free_packet`.
2015-10-26 18:00:55 +01:00
Vittorio Giovara f890677d05 Replace any remaining avpicture function with imgutils
avpicture_get_size() -> av_image_get_buffer_size()

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-10-21 11:59:59 +02:00
Vittorio Giovara e88103a7f9 Bump major versions of all libraries
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-08-28 16:04:28 +02:00
Vittorio Giovara 01bcc2d5c2 lavc: Drop deprecated destruct_packet related functions
Deprecated in 10/2012.
2015-08-28 16:01:16 +02:00
Vittorio Giovara 059a934806 lavc: Consistently prefix input buffer defines
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-07-27 15:24:59 +01:00
Vittorio Giovara 40cf1bbacc Deprecate avctx.coded_frame
The rationale is that coded_frame was only used to communicate key_frame,
pict_type and quality to the caller, as well as a few other random fields,
in a non predictable, let alone consistent way.

There was agreement that there was no use case for coded_frame, as it is
a full-sized AVFrame container used for just 2-3 int-sized properties,
which shouldn't even belong into the AVCodecContext in the first place.

The appropriate AVPacket flag can be used instead of key_frame, while
quality is exported with the new AVPacketSideData quality factor.
There is no replacement for the other fields as they were unreliable,
mishandled or just not used at all.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-07-20 15:06:50 +01:00
Dan Flett 87f98a2b9d fbdev: Support the RGB565 colour space.
Tested on a Raspberry Pi.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-07-11 10:15:59 +03:00
Luca Barbato c8b8271379 xcbgrab: Explicitly include xcb/shape.h
Found-By: Cheristheus
2015-07-06 20:00:34 +02:00
Vittorio Giovara 0f87f9b4fc lavd: Add library identifier 2015-07-01 00:13:58 +01:00
Vittorio Giovara bc1eace1b3 jack: Check memory allocation
CC: libav-stable@libav.org
Bug-Id: CID 1292520
2015-06-08 13:03:27 +01:00
Nicolas George 01fdfa51ac xcbgrab: Accept geometries matching the screen size
Introduced in e8c4db0d4d.
2015-05-06 12:25:32 +02:00
Luca Barbato e8c4db0d4d xcbgrab: Validate the capture area
And notify why the capture is impossible.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-04-30 14:10:13 +02:00
Luca Barbato 82a10225f8 xcbgrab: Do not assume the non shm image data is always available
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-04-30 14:10:13 +02:00
Federico Tomassetti 386e2755aa jack: Check memory allocation
Bug-Id: CID 1265785
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-04-19 23:50:48 +01:00
Vittorio Giovara 1a3eb042c7 Replace av_dlog with normal av_log at trace level
This applies to every library where performance is not critical.
2015-04-19 12:41:59 +01:00
Michael Kostylev 7a9b764c07 libdc1394: Unbreak build after c201069fa 2015-04-11 10:57:18 +02:00
Martin Storsjö 4f373a5111 vfwcap: Unbreak building after c201069fa
These headers can't be included in any arbitrary order.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-04-11 00:15:47 +03:00
Diego Biurrun 8d26c193fb avdevice: Apply a more consistent file naming scheme 2015-04-09 16:40:12 +02:00
Diego Biurrun c201069fac avdevice: Add missing header for NULL_IF_CONFIG_SMALL
Also reshuffle headers into canonical order where appropriate.
2015-04-09 16:40:12 +02:00
Vittorio Giovara edca1dd552 xcbgrab: Check av_strdup() allocation
Bug-Id: CID 1274038
2015-03-12 15:29:59 +00:00
Luca Barbato 5f5b78aca3 xcbgrab: Free the host string after checking the connection
Prevent an use after free in the error message.

Bug-Id: CID 1274040
CC: libav-stable@libav.org
2015-03-08 14:39:01 +01:00
Luca Barbato 9a26ba9713 v4l2: Add support for h264 2015-03-02 12:07:59 +01:00
Luca Barbato 619d5e7db8 v4l2: Use the codec descriptor facility
The encoder or decoder might be disabled but the format would be
supported for at least remuxing.
2015-03-02 11:27:57 +01:00
Christian Hujer 802987f8c7 x11grab: Unbreak building
The correct macro is DEC not D. Broken in
b31328d008

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-02-28 21:51:24 +01:00
Luca Barbato 85b3b1c4ba xcbgrab: Unbreak parsing filename options
CC: libav-stable@libav.org

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-02-24 22:31:20 +01:00
Luca Barbato b31328d008 xcbgrab: Provide better names for the y and x option
Incidentally `-y` also collides with avconv global options.

Update x11grab to match and document the option.

CC: libav-stable@libav.org

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-02-24 22:31:20 +01:00
Himangi Saraogi 81ef46020f bktr: Use av_strerror and propagate error codes
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2015-02-15 13:42:31 -08:00
Daniel Moran 51ca3cb604 xcbgrab: Use the correct geometry for the region highlight
The feature is implemented using a transparent window and drawing
inside it a rectangle filling the whole window to highlight it.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-02-15 18:20:54 +01:00
Luca Barbato d40815a982 xcbgrab: Correctly make shm optional
The segment field in the struct has to be conditionally build
as well.
2015-02-15 18:20:54 +01:00
Clay McClure 6a808f5ae1 libdc1394: Add support for MONO8 (gray) video mode
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-01-28 16:10:24 +01:00
Vittorio Giovara 9e06327ecb xcbgrab: Move NULL check before pointer dereference
Bug-Id: CID 1254668
2014-12-18 23:27:14 +01:00
Luca Barbato 2c3f29c489 xcbgrab: Support empty filename string correctly
Bug-Id: CID 1254664
CC: libav-stable@libav.org
2014-12-10 01:45:50 +01:00
Martin Storsjö b776113e5d v4l2: Unify one instance of reading/storing errno
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-11 10:07:20 +02:00
Luca Barbato 09f25533a5 v4l2: Preserve errno values
av_log usually resets it.
2014-11-09 12:59:32 +01:00
Tristan Matthews a1a259881f v4l2: Use av_strerror
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-11-09 12:29:59 +01:00
Luca Barbato 2cd28693a5 jack: Use av_strerror 2014-10-29 16:54:43 +00:00
Luca Barbato 043ea6f7bf fbdev: Use av_strerror 2014-10-29 16:54:43 +00:00
Anton Khirnov 4ad1eba011 lavd: fix building x11grab after a6674d2 2014-10-28 07:22:00 +01:00
Luca Barbato a6674d2e77 xcbgrab: XCB-based screen capture
Matches the x11grab screen capture by features.
2014-10-26 08:47:41 +01:00
Timothy Gu b7c77912b6 oss_audio: use a macro to simplify ioctl() error checking
Also add a note about SNDCTL_DSP_GETFMTS which may fail even if OSS is
available.

CC: libav-stable@libav.org
Bug-Id: CID 1238992
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2014-10-18 16:15:10 +01:00
Antonio Ospite 2a5ac99e6e x11grab: Check the XQueryPointer return value
The paint_mouse_pointer() code uses XFixes to retrieve the cursor
coordinates, but XFixes gives no information about which screen the
pointer is on; this results in always drawing the cursor on the
captured screen even if the mouse pointer was on another screen.

For example, when capturing from screen 1 (i.e. -f x11grab -i ":0.1")
the cursor was being drawn in the captured image even when the mouse
pointer was actually on screen 0, which is wrong and visually confusing.

CC: libav-stable@libav.org
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-10-04 23:46:46 +02:00
Luca Barbato 5b9c817dc7 x11grab: Check XFixesGetCursorImage return value
It could return NULL if the cursor is outside the screen, the connection
timed out or the system is out of memory.

CC: libav-stable@libav.org
2014-10-04 23:46:46 +02:00
Luca Barbato 89fa2b5616 x11grab: Check for XFixes availability at runtime 2014-10-04 23:46:46 +02:00
Luca Barbato 65e78a2e4b x11grab: Refactor pixel format parsing 2014-09-03 02:38:03 +02:00
Luca Barbato bb3ead7e54 x11grab: Fallback to normal XImage if SHM is not supported 2014-09-03 02:38:03 +02:00
Luca Barbato 58396e806c x11grab: Use a typedef for the context, as most other code does
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-08-28 15:49:05 +02:00
Luca Barbato 7bb505a33c x11grab: Drop a spurious space in the extension reporting message
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-08-28 15:46:56 +02:00
Luca Barbato 20e82b41fc x11grab: Small near-cosmetic refactorings
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-08-28 15:20:12 +02:00