Merge remote-tracking branch 'qatar/master'
* qatar/master: (31 commits) ARM: add ARMv6 optimised av_clip_uintp2 ARM: remove volatile from asm statements in libavutil/intmath ARM: fix av_clipl_int32_arm() v4l: include avdevice.h ffserver: move close_connection() call to avoid a temporary string and copy. lavf: initialize demuxer private options. AVOptions: set string default values. lavdevice: mark v4l for removal on next major bump. swscale: fix compile on ppc. swscale: fix compile on x86-32. build: Remove generated .version file on distclean. configure: Add -D_GNU_SOURCE to CPPFLAGS on OS/2. doc: Drop hint at --enable-memalign-hack for MinGW, it is now autodetected. ffplay: Remove disabled code. Mark parameterless function declarations as 'void'. swscale: use av_clip_uint8() in yuv2yuv1_c(). swscale: remove VOF/VOFW. swscale: split chroma buffers into separate U/V planes. swscale: replace formatConvBuffer[VOF] by allocated array. rgb2rgb: remove duplicate mmx/mmx2/3dnow/sse2 functions. ... Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
027264cb82
2
Makefile
2
Makefile
@ -174,7 +174,7 @@ clean:: testclean
|
|||||||
|
|
||||||
distclean::
|
distclean::
|
||||||
$(RM) $(DISTCLEANSUFFIXES)
|
$(RM) $(DISTCLEANSUFFIXES)
|
||||||
$(RM) version.h config.* libavutil/avconfig.h
|
$(RM) config.* .version version.h libavutil/avconfig.h
|
||||||
|
|
||||||
config:
|
config:
|
||||||
$(SRC_PATH)/configure $(value FFMPEG_CONFIGURATION)
|
$(SRC_PATH)/configure $(value FFMPEG_CONFIGURATION)
|
||||||
|
1
configure
vendored
1
configure
vendored
@ -2510,6 +2510,7 @@ case $target_os in
|
|||||||
strip="lxlite -CS"
|
strip="lxlite -CS"
|
||||||
ln_s="cp -f"
|
ln_s="cp -f"
|
||||||
objformat="aout"
|
objformat="aout"
|
||||||
|
add_cppflags -D_GNU_SOURCE
|
||||||
add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
|
add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
|
||||||
SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
|
SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
|
||||||
FFSERVERLDFLAGS=""
|
FFSERVERLDFLAGS=""
|
||||||
|
@ -843,18 +843,6 @@ are listed below:
|
|||||||
FFmpeg automatically passes @code{-fno-common} to the compiler to work around
|
FFmpeg automatically passes @code{-fno-common} to the compiler to work around
|
||||||
a GCC bug (see @url{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37216}).
|
a GCC bug (see @url{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37216}).
|
||||||
|
|
||||||
Within the MSYS shell, configure and make with:
|
|
||||||
|
|
||||||
@example
|
|
||||||
./configure --enable-memalign-hack
|
|
||||||
make
|
|
||||||
make install
|
|
||||||
@end example
|
|
||||||
|
|
||||||
This will install @file{ffmpeg.exe} along with many other development files
|
|
||||||
to @file{/usr/local}. You may specify another install path using the
|
|
||||||
@code{--prefix} option in @file{configure}.
|
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
|
|
||||||
@itemize
|
@itemize
|
||||||
|
2
ffmpeg.c
2
ffmpeg.c
@ -707,7 +707,7 @@ static int read_ffserver_streams(AVFormatContext *s, const char *filename)
|
|||||||
return err;
|
return err;
|
||||||
/* copy stream format */
|
/* copy stream format */
|
||||||
s->nb_streams = 0;
|
s->nb_streams = 0;
|
||||||
s->streams = av_mallocz(sizeof(*s->streams) * ic->nb_streams);
|
s->streams = av_mallocz(sizeof(AVStream *) * ic->nb_streams);
|
||||||
for(i=0;i<ic->nb_streams;i++) {
|
for(i=0;i<ic->nb_streams;i++) {
|
||||||
AVStream *st;
|
AVStream *st;
|
||||||
AVCodec *codec;
|
AVCodec *codec;
|
||||||
|
60
ffplay.c
60
ffplay.c
@ -406,44 +406,6 @@ static inline void fill_rectangle(SDL_Surface *screen,
|
|||||||
SDL_FillRect(screen, &rect, color);
|
SDL_FillRect(screen, &rect, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* draw only the border of a rectangle */
|
|
||||||
void fill_border(VideoState *s, int x, int y, int w, int h, int color)
|
|
||||||
{
|
|
||||||
int w1, w2, h1, h2;
|
|
||||||
|
|
||||||
/* fill the background */
|
|
||||||
w1 = x;
|
|
||||||
if (w1 < 0)
|
|
||||||
w1 = 0;
|
|
||||||
w2 = s->width - (x + w);
|
|
||||||
if (w2 < 0)
|
|
||||||
w2 = 0;
|
|
||||||
h1 = y;
|
|
||||||
if (h1 < 0)
|
|
||||||
h1 = 0;
|
|
||||||
h2 = s->height - (y + h);
|
|
||||||
if (h2 < 0)
|
|
||||||
h2 = 0;
|
|
||||||
fill_rectangle(screen,
|
|
||||||
s->xleft, s->ytop,
|
|
||||||
w1, s->height,
|
|
||||||
color);
|
|
||||||
fill_rectangle(screen,
|
|
||||||
s->xleft + s->width - w2, s->ytop,
|
|
||||||
w2, s->height,
|
|
||||||
color);
|
|
||||||
fill_rectangle(screen,
|
|
||||||
s->xleft + w1, s->ytop,
|
|
||||||
s->width - w1 - w2, h1,
|
|
||||||
color);
|
|
||||||
fill_rectangle(screen,
|
|
||||||
s->xleft + w1, s->ytop + s->height - h2,
|
|
||||||
s->width - w1 - w2, h2,
|
|
||||||
color);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ALPHA_BLEND(a, oldp, newp, s)\
|
#define ALPHA_BLEND(a, oldp, newp, s)\
|
||||||
((((oldp << s) * (255 - (a))) + (newp * (a))) / (255 << s))
|
((((oldp << s) * (255 - (a))) + (newp * (a))) / (255 << s))
|
||||||
|
|
||||||
@ -743,23 +705,12 @@ static void video_image_display(VideoState *is)
|
|||||||
}
|
}
|
||||||
x = (is->width - width) / 2;
|
x = (is->width - width) / 2;
|
||||||
y = (is->height - height) / 2;
|
y = (is->height - height) / 2;
|
||||||
if (!is->no_background) {
|
|
||||||
/* fill the background */
|
|
||||||
// fill_border(is, x, y, width, height, QERGB(0x00, 0x00, 0x00));
|
|
||||||
} else {
|
|
||||||
is->no_background = 0;
|
is->no_background = 0;
|
||||||
}
|
|
||||||
rect.x = is->xleft + x;
|
rect.x = is->xleft + x;
|
||||||
rect.y = is->ytop + y;
|
rect.y = is->ytop + y;
|
||||||
rect.w = FFMAX(width, 1);
|
rect.w = FFMAX(width, 1);
|
||||||
rect.h = FFMAX(height, 1);
|
rect.h = FFMAX(height, 1);
|
||||||
SDL_DisplayYUVOverlay(vp->bmp, &rect);
|
SDL_DisplayYUVOverlay(vp->bmp, &rect);
|
||||||
} else {
|
|
||||||
#if 0
|
|
||||||
fill_rectangle(screen,
|
|
||||||
is->xleft, is->ytop, is->width, is->height,
|
|
||||||
QERGB(0x00, 0x00, 0x00));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1899,8 +1850,6 @@ static int subtitle_thread(void *arg)
|
|||||||
len1 = avcodec_decode_subtitle2(is->subtitle_st->codec,
|
len1 = avcodec_decode_subtitle2(is->subtitle_st->codec,
|
||||||
&sp->sub, &got_subtitle,
|
&sp->sub, &got_subtitle,
|
||||||
pkt);
|
pkt);
|
||||||
// if (len1 < 0)
|
|
||||||
// break;
|
|
||||||
if (got_subtitle && sp->sub.format == 0) {
|
if (got_subtitle && sp->sub.format == 0) {
|
||||||
sp->pts = pts;
|
sp->pts = pts;
|
||||||
|
|
||||||
@ -1924,9 +1873,6 @@ static int subtitle_thread(void *arg)
|
|||||||
SDL_UnlockMutex(is->subpq_mutex);
|
SDL_UnlockMutex(is->subpq_mutex);
|
||||||
}
|
}
|
||||||
av_free_packet(pkt);
|
av_free_packet(pkt);
|
||||||
// if (step)
|
|
||||||
// if (cur_stream)
|
|
||||||
// stream_toggle_pause(cur_stream);
|
|
||||||
}
|
}
|
||||||
the_end:
|
the_end:
|
||||||
return 0;
|
return 0;
|
||||||
@ -2254,8 +2200,6 @@ static int stream_component_open(VideoState *is, int stream_index)
|
|||||||
is->video_stream = stream_index;
|
is->video_stream = stream_index;
|
||||||
is->video_st = ic->streams[stream_index];
|
is->video_st = ic->streams[stream_index];
|
||||||
|
|
||||||
// is->video_current_pts_time = av_gettime();
|
|
||||||
|
|
||||||
packet_queue_init(&is->videoq);
|
packet_queue_init(&is->videoq);
|
||||||
is->video_tid = SDL_CreateThread(video_thread, is);
|
is->video_tid = SDL_CreateThread(video_thread, is);
|
||||||
break;
|
break;
|
||||||
@ -2694,10 +2638,6 @@ static void stream_cycle_channel(VideoState *is, int codec_type)
|
|||||||
static void toggle_full_screen(void)
|
static void toggle_full_screen(void)
|
||||||
{
|
{
|
||||||
is_full_screen = !is_full_screen;
|
is_full_screen = !is_full_screen;
|
||||||
if (!fs_screen_width) {
|
|
||||||
/* use default SDL method */
|
|
||||||
// SDL_WM_ToggleFullScreen(screen);
|
|
||||||
}
|
|
||||||
video_open(cur_stream);
|
video_open(cur_stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
26
ffserver.c
26
ffserver.c
@ -2229,12 +2229,11 @@ static int http_prepare_data(HTTPContext *c)
|
|||||||
av_metadata_set2(&c->fmt_ctx.metadata, "copyright", c->stream->copyright, 0);
|
av_metadata_set2(&c->fmt_ctx.metadata, "copyright", c->stream->copyright, 0);
|
||||||
av_metadata_set2(&c->fmt_ctx.metadata, "title" , c->stream->title , 0);
|
av_metadata_set2(&c->fmt_ctx.metadata, "title" , c->stream->title , 0);
|
||||||
|
|
||||||
c->fmt_ctx.streams = av_mallocz(sizeof(*c->fmt_ctx.streams) * c->stream->nb_streams);
|
c->fmt_ctx.streams = av_mallocz(sizeof(AVStream *) * c->stream->nb_streams);
|
||||||
|
|
||||||
for(i=0;i<c->stream->nb_streams;i++) {
|
for(i=0;i<c->stream->nb_streams;i++) {
|
||||||
AVStream *st;
|
|
||||||
AVStream *src;
|
AVStream *src;
|
||||||
st = av_mallocz(sizeof(AVStream));
|
c->fmt_ctx.streams[i] = av_mallocz(sizeof(AVStream));
|
||||||
c->fmt_ctx.streams[i] = st;
|
|
||||||
/* if file or feed, then just take streams from FFStream struct */
|
/* if file or feed, then just take streams from FFStream struct */
|
||||||
if (!c->stream->feed ||
|
if (!c->stream->feed ||
|
||||||
c->stream->feed == c->stream)
|
c->stream->feed == c->stream)
|
||||||
@ -2242,9 +2241,9 @@ static int http_prepare_data(HTTPContext *c)
|
|||||||
else
|
else
|
||||||
src = c->stream->feed->streams[c->stream->feed_streams[i]];
|
src = c->stream->feed->streams[c->stream->feed_streams[i]];
|
||||||
|
|
||||||
*st = *src;
|
*(c->fmt_ctx.streams[i]) = *src;
|
||||||
st->priv_data = 0;
|
c->fmt_ctx.streams[i]->priv_data = 0;
|
||||||
st->codec->frame_number = 0; /* XXX: should be done in
|
c->fmt_ctx.streams[i]->codec->frame_number = 0; /* XXX: should be done in
|
||||||
AVStream, not in codec */
|
AVStream, not in codec */
|
||||||
}
|
}
|
||||||
/* set output format parameters */
|
/* set output format parameters */
|
||||||
@ -3275,7 +3274,6 @@ static void rtsp_cmd_pause(HTTPContext *c, const char *url, RTSPMessageHeader *h
|
|||||||
static void rtsp_cmd_teardown(HTTPContext *c, const char *url, RTSPMessageHeader *h)
|
static void rtsp_cmd_teardown(HTTPContext *c, const char *url, RTSPMessageHeader *h)
|
||||||
{
|
{
|
||||||
HTTPContext *rtp_c;
|
HTTPContext *rtp_c;
|
||||||
char session_id[32];
|
|
||||||
|
|
||||||
rtp_c = find_rtp_session_with_url(url, h->session_id);
|
rtp_c = find_rtp_session_with_url(url, h->session_id);
|
||||||
if (!rtp_c) {
|
if (!rtp_c) {
|
||||||
@ -3283,16 +3281,14 @@ static void rtsp_cmd_teardown(HTTPContext *c, const char *url, RTSPMessageHeader
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
av_strlcpy(session_id, rtp_c->session_id, sizeof(session_id));
|
|
||||||
|
|
||||||
/* abort the session */
|
|
||||||
close_connection(rtp_c);
|
|
||||||
|
|
||||||
/* now everything is OK, so we can send the connection parameters */
|
/* now everything is OK, so we can send the connection parameters */
|
||||||
rtsp_reply_header(c, RTSP_STATUS_OK);
|
rtsp_reply_header(c, RTSP_STATUS_OK);
|
||||||
/* session ID */
|
/* session ID */
|
||||||
avio_printf(c->pb, "Session: %s\r\n", session_id);
|
avio_printf(c->pb, "Session: %s\r\n", rtp_c->session_id);
|
||||||
avio_printf(c->pb, "\r\n");
|
avio_printf(c->pb, "\r\n");
|
||||||
|
|
||||||
|
/* abort the session */
|
||||||
|
close_connection(rtp_c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3386,7 +3382,7 @@ static int rtp_new_av_stream(HTTPContext *c,
|
|||||||
if (!st)
|
if (!st)
|
||||||
goto fail;
|
goto fail;
|
||||||
ctx->nb_streams = 1;
|
ctx->nb_streams = 1;
|
||||||
ctx->streams = av_mallocz(sizeof(*ctx->streams) * ctx->nb_streams);
|
ctx->streams = av_mallocz(sizeof(AVStream *) * ctx->nb_streams);
|
||||||
if (!ctx->streams)
|
if (!ctx->streams)
|
||||||
goto fail;
|
goto fail;
|
||||||
ctx->streams[0] = st;
|
ctx->streams[0] = st;
|
||||||
|
@ -555,8 +555,8 @@ static inline float calc_cpl_coord(float energy_ch, float energy_cpl)
|
|||||||
static void apply_channel_coupling(AC3EncodeContext *s)
|
static void apply_channel_coupling(AC3EncodeContext *s)
|
||||||
{
|
{
|
||||||
#if CONFIG_AC3ENC_FLOAT
|
#if CONFIG_AC3ENC_FLOAT
|
||||||
DECLARE_ALIGNED(16, float, cpl_coords) [AC3_MAX_BLOCKS][AC3_MAX_CHANNELS][16];
|
DECLARE_ALIGNED(16, float, cpl_coords) [AC3_MAX_BLOCKS][AC3_MAX_CHANNELS][16] = {{{0}}};
|
||||||
DECLARE_ALIGNED(16, int32_t, fixed_cpl_coords)[AC3_MAX_BLOCKS][AC3_MAX_CHANNELS][16];
|
DECLARE_ALIGNED(16, int32_t, fixed_cpl_coords)[AC3_MAX_BLOCKS][AC3_MAX_CHANNELS][16] = {{{0}}};
|
||||||
int blk, ch, bnd, i, j;
|
int blk, ch, bnd, i, j;
|
||||||
CoefSumType energy[AC3_MAX_BLOCKS][AC3_MAX_CHANNELS][16] = {{{0}}};
|
CoefSumType energy[AC3_MAX_BLOCKS][AC3_MAX_CHANNELS][16] = {{{0}}};
|
||||||
int num_cpl_coefs = s->num_cpl_subbands * 12;
|
int num_cpl_coefs = s->num_cpl_subbands * 12;
|
||||||
@ -2630,7 +2630,7 @@ static av_cold int allocate_buffers(AVCodecContext *avctx)
|
|||||||
AC3_MAX_COEFS * sizeof(*s->bap_buffer), alloc_fail);
|
AC3_MAX_COEFS * sizeof(*s->bap_buffer), alloc_fail);
|
||||||
FF_ALLOC_OR_GOTO(avctx, s->bap1_buffer, AC3_MAX_BLOCKS * channels *
|
FF_ALLOC_OR_GOTO(avctx, s->bap1_buffer, AC3_MAX_BLOCKS * channels *
|
||||||
AC3_MAX_COEFS * sizeof(*s->bap1_buffer), alloc_fail);
|
AC3_MAX_COEFS * sizeof(*s->bap1_buffer), alloc_fail);
|
||||||
FF_ALLOC_OR_GOTO(avctx, s->mdct_coef_buffer, AC3_MAX_BLOCKS * channels *
|
FF_ALLOCZ_OR_GOTO(avctx, s->mdct_coef_buffer, AC3_MAX_BLOCKS * channels *
|
||||||
AC3_MAX_COEFS * sizeof(*s->mdct_coef_buffer), alloc_fail);
|
AC3_MAX_COEFS * sizeof(*s->mdct_coef_buffer), alloc_fail);
|
||||||
FF_ALLOC_OR_GOTO(avctx, s->exp_buffer, AC3_MAX_BLOCKS * channels *
|
FF_ALLOC_OR_GOTO(avctx, s->exp_buffer, AC3_MAX_BLOCKS * channels *
|
||||||
AC3_MAX_COEFS * sizeof(*s->exp_buffer), alloc_fail);
|
AC3_MAX_COEFS * sizeof(*s->exp_buffer), alloc_fail);
|
||||||
@ -2695,7 +2695,7 @@ static av_cold int allocate_buffers(AVCodecContext *avctx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (CONFIG_AC3ENC_FLOAT) {
|
if (CONFIG_AC3ENC_FLOAT) {
|
||||||
FF_ALLOC_OR_GOTO(avctx, s->fixed_coef_buffer, AC3_MAX_BLOCKS * channels *
|
FF_ALLOCZ_OR_GOTO(avctx, s->fixed_coef_buffer, AC3_MAX_BLOCKS * channels *
|
||||||
AC3_MAX_COEFS * sizeof(*s->fixed_coef_buffer), alloc_fail);
|
AC3_MAX_COEFS * sizeof(*s->fixed_coef_buffer), alloc_fail);
|
||||||
for (blk = 0; blk < AC3_MAX_BLOCKS; blk++) {
|
for (blk = 0; blk < AC3_MAX_BLOCKS; blk++) {
|
||||||
AC3Block *block = &s->blocks[blk];
|
AC3Block *block = &s->blocks[blk];
|
||||||
|
@ -1208,7 +1208,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
|
|||||||
/**
|
/**
|
||||||
* Caclulate quantization tables for version b
|
* Caclulate quantization tables for version b
|
||||||
*/
|
*/
|
||||||
static av_cold void binkb_calc_quant()
|
static av_cold void binkb_calc_quant(void)
|
||||||
{
|
{
|
||||||
uint8_t inv_bink_scan[64];
|
uint8_t inv_bink_scan[64];
|
||||||
double s[64];
|
double s[64];
|
||||||
|
@ -48,7 +48,9 @@ void avdevice_register_all(void)
|
|||||||
REGISTER_INOUTDEV (OSS, oss);
|
REGISTER_INOUTDEV (OSS, oss);
|
||||||
REGISTER_INOUTDEV (SNDIO, sndio);
|
REGISTER_INOUTDEV (SNDIO, sndio);
|
||||||
REGISTER_INDEV (V4L2, v4l2);
|
REGISTER_INDEV (V4L2, v4l2);
|
||||||
|
#if FF_API_V4L
|
||||||
REGISTER_INDEV (V4L, v4l);
|
REGISTER_INDEV (V4L, v4l);
|
||||||
|
#endif
|
||||||
REGISTER_INDEV (VFWCAP, vfwcap);
|
REGISTER_INDEV (VFWCAP, vfwcap);
|
||||||
REGISTER_INDEV (X11_GRAB_DEVICE, x11_grab_device);
|
REGISTER_INDEV (X11_GRAB_DEVICE, x11_grab_device);
|
||||||
|
|
||||||
|
@ -33,6 +33,10 @@
|
|||||||
LIBAVDEVICE_VERSION_MICRO)
|
LIBAVDEVICE_VERSION_MICRO)
|
||||||
#define LIBAVDEVICE_BUILD LIBAVDEVICE_VERSION_INT
|
#define LIBAVDEVICE_BUILD LIBAVDEVICE_VERSION_INT
|
||||||
|
|
||||||
|
#ifndef FF_API_V4L
|
||||||
|
#define FF_API_V4L (LIBAVDEVICE_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the LIBAVDEVICE_VERSION_INT constant.
|
* Return the LIBAVDEVICE_VERSION_INT constant.
|
||||||
*/
|
*/
|
||||||
|
@ -90,6 +90,21 @@ struct dc1394_frame_rate {
|
|||||||
{ 0, 0 } /* gotta be the last one */
|
{ 0, 0 } /* gotta be the last one */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const AVOption options[] = {
|
||||||
|
#if HAVE_LIBDC1394_1
|
||||||
|
{ "channel", "", offsetof(dc1394_data, channel), FF_OPT_TYPE_INT, {.dbl = 0}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
|
||||||
|
#endif
|
||||||
|
{ NULL },
|
||||||
|
};
|
||||||
|
|
||||||
|
static const AVClass libdc1394_class = {
|
||||||
|
.class_name = "libdc1394 indev",
|
||||||
|
.item_name = av_default_item_name,
|
||||||
|
.option = options,
|
||||||
|
.version = LIBAVUTIL_VERSION_INT,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
static inline int dc1394_read_common(AVFormatContext *c, AVFormatParameters *ap,
|
static inline int dc1394_read_common(AVFormatContext *c, AVFormatParameters *ap,
|
||||||
struct dc1394_frame_format **select_fmt, struct dc1394_frame_rate **select_fps)
|
struct dc1394_frame_format **select_fmt, struct dc1394_frame_rate **select_fps)
|
||||||
{
|
{
|
||||||
@ -245,20 +260,6 @@ static int dc1394_v1_close(AVFormatContext * context)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const AVOption options[] = {
|
|
||||||
#if HAVE_LIBDC1394_1
|
|
||||||
{ "channel", "", offsetof(dc1394_data, channel), FF_OPT_TYPE_INT, {.dbl = 0}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
|
|
||||||
#endif
|
|
||||||
{ NULL },
|
|
||||||
};
|
|
||||||
|
|
||||||
static const AVClass libdc1394_class = {
|
|
||||||
.class_name = "libdc1394 indev",
|
|
||||||
.item_name = av_default_item_name,
|
|
||||||
.option = options,
|
|
||||||
.version = LIBAVUTIL_VERSION_INT,
|
|
||||||
};
|
|
||||||
|
|
||||||
#elif HAVE_LIBDC1394_2
|
#elif HAVE_LIBDC1394_2
|
||||||
static int dc1394_v2_read_header(AVFormatContext *c, AVFormatParameters * ap)
|
static int dc1394_v2_read_header(AVFormatContext *c, AVFormatParameters * ap)
|
||||||
{
|
{
|
||||||
@ -378,7 +379,7 @@ AVInputFormat ff_libdc1394_demuxer = {
|
|||||||
.read_header = dc1394_v2_read_header,
|
.read_header = dc1394_v2_read_header,
|
||||||
.read_packet = dc1394_v2_read_packet,
|
.read_packet = dc1394_v2_read_packet,
|
||||||
.read_close = dc1394_v2_close,
|
.read_close = dc1394_v2_close,
|
||||||
.flags = AVFMT_NOFILE
|
.flags = AVFMT_NOFILE,
|
||||||
.priv_class = &libdc1394_class,
|
.priv_class = &libdc1394_class,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -19,6 +19,10 @@
|
|||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "avdevice.h"
|
||||||
|
|
||||||
|
#if FF_API_V4L
|
||||||
|
|
||||||
#undef __STRICT_ANSI__ //workaround due to broken kernel headers
|
#undef __STRICT_ANSI__ //workaround due to broken kernel headers
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "libavutil/rational.h"
|
#include "libavutil/rational.h"
|
||||||
@ -83,6 +87,8 @@ static int grab_read_header(AVFormatContext *s1, AVFormatParameters *ap)
|
|||||||
int j;
|
int j;
|
||||||
int vformat_num = FF_ARRAY_ELEMS(video_formats);
|
int vformat_num = FF_ARRAY_ELEMS(video_formats);
|
||||||
|
|
||||||
|
av_log(s1, AV_LOG_WARNING, "V4L input device is deprecated and will be removed in the next release.");
|
||||||
|
|
||||||
if (ap->time_base.den <= 0) {
|
if (ap->time_base.den <= 0) {
|
||||||
av_log(s1, AV_LOG_ERROR, "Wrong time base (%d)\n", ap->time_base.den);
|
av_log(s1, AV_LOG_ERROR, "Wrong time base (%d)\n", ap->time_base.den);
|
||||||
return -1;
|
return -1;
|
||||||
@ -374,3 +380,4 @@ AVInputFormat ff_v4l_demuxer = {
|
|||||||
.flags = AVFMT_NOFILE,
|
.flags = AVFMT_NOFILE,
|
||||||
.priv_class = &v4l_class,
|
.priv_class = &v4l_class,
|
||||||
};
|
};
|
||||||
|
#endif /* FF_API_V4L */
|
||||||
|
@ -33,7 +33,8 @@
|
|||||||
#define ECONNREFUSED WSAECONNREFUSED
|
#define ECONNREFUSED WSAECONNREFUSED
|
||||||
#define EINPROGRESS WSAEINPROGRESS
|
#define EINPROGRESS WSAEINPROGRESS
|
||||||
|
|
||||||
static inline int ff_neterrno() {
|
static inline int ff_neterrno(void)
|
||||||
|
{
|
||||||
int err = WSAGetLastError();
|
int err = WSAGetLastError();
|
||||||
switch (err) {
|
switch (err) {
|
||||||
case WSAEWOULDBLOCK:
|
case WSAEWOULDBLOCK:
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
static av_always_inline av_const int FASTDIV(int a, int b)
|
static av_always_inline av_const int FASTDIV(int a, int b)
|
||||||
{
|
{
|
||||||
int r, t;
|
int r, t;
|
||||||
__asm__ volatile("cmp %3, #2 \n\t"
|
__asm__ ("cmp %3, #2 \n\t"
|
||||||
"ldr %1, [%4, %3, lsl #2] \n\t"
|
"ldr %1, [%4, %3, lsl #2] \n\t"
|
||||||
"lsrle %0, %2, #1 \n\t"
|
"lsrle %0, %2, #1 \n\t"
|
||||||
"smmulgt %0, %1, %2 \n\t"
|
"smmulgt %0, %1, %2 \n\t"
|
||||||
@ -46,7 +46,7 @@ static av_always_inline av_const int FASTDIV(int a, int b)
|
|||||||
static av_always_inline av_const uint8_t av_clip_uint8_arm(int a)
|
static av_always_inline av_const uint8_t av_clip_uint8_arm(int a)
|
||||||
{
|
{
|
||||||
unsigned x;
|
unsigned x;
|
||||||
__asm__ volatile ("usat %0, #8, %1" : "=r"(x) : "r"(a));
|
__asm__ ("usat %0, #8, %1" : "=r"(x) : "r"(a));
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,7 +54,7 @@ static av_always_inline av_const uint8_t av_clip_uint8_arm(int a)
|
|||||||
static av_always_inline av_const uint8_t av_clip_int8_arm(int a)
|
static av_always_inline av_const uint8_t av_clip_int8_arm(int a)
|
||||||
{
|
{
|
||||||
unsigned x;
|
unsigned x;
|
||||||
__asm__ volatile ("ssat %0, #8, %1" : "=r"(x) : "r"(a));
|
__asm__ ("ssat %0, #8, %1" : "=r"(x) : "r"(a));
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ static av_always_inline av_const uint8_t av_clip_int8_arm(int a)
|
|||||||
static av_always_inline av_const uint16_t av_clip_uint16_arm(int a)
|
static av_always_inline av_const uint16_t av_clip_uint16_arm(int a)
|
||||||
{
|
{
|
||||||
unsigned x;
|
unsigned x;
|
||||||
__asm__ volatile ("usat %0, #16, %1" : "=r"(x) : "r"(a));
|
__asm__ ("usat %0, #16, %1" : "=r"(x) : "r"(a));
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,17 +70,26 @@ static av_always_inline av_const uint16_t av_clip_uint16_arm(int a)
|
|||||||
static av_always_inline av_const int16_t av_clip_int16_arm(int a)
|
static av_always_inline av_const int16_t av_clip_int16_arm(int a)
|
||||||
{
|
{
|
||||||
int x;
|
int x;
|
||||||
__asm__ volatile ("ssat %0, #16, %1" : "=r"(x) : "r"(a));
|
__asm__ ("ssat %0, #16, %1" : "=r"(x) : "r"(a));
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define av_clip_uintp2 av_clip_uintp2_arm
|
||||||
|
static av_always_inline av_const unsigned av_clip_uintp2_arm(int a, int p)
|
||||||
|
{
|
||||||
|
unsigned x;
|
||||||
|
__asm__ ("usat %0, %2, %1" : "=r"(x) : "r"(a), "i"(p));
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#else /* HAVE_ARMV6 */
|
#else /* HAVE_ARMV6 */
|
||||||
|
|
||||||
#define FASTDIV FASTDIV
|
#define FASTDIV FASTDIV
|
||||||
static av_always_inline av_const int FASTDIV(int a, int b)
|
static av_always_inline av_const int FASTDIV(int a, int b)
|
||||||
{
|
{
|
||||||
int r, t;
|
int r, t;
|
||||||
__asm__ volatile("umull %1, %0, %2, %3"
|
__asm__ ("umull %1, %0, %2, %3"
|
||||||
: "=&r"(r), "=&r"(t) : "r"(a), "r"(ff_inverse[b]));
|
: "=&r"(r), "=&r"(t) : "r"(a), "r"(ff_inverse[b]));
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
@ -91,8 +100,9 @@ static av_always_inline av_const int FASTDIV(int a, int b)
|
|||||||
static av_always_inline av_const int32_t av_clipl_int32_arm(int64_t a)
|
static av_always_inline av_const int32_t av_clipl_int32_arm(int64_t a)
|
||||||
{
|
{
|
||||||
int x, y;
|
int x, y;
|
||||||
__asm__ volatile ("adds %1, %R2, %Q2, lsr #31 \n\t"
|
__asm__ ("adds %1, %R2, %Q2, lsr #31 \n\t"
|
||||||
"mvnne %1, #1<<31 \n\t"
|
"mvnne %1, #1<<31 \n\t"
|
||||||
|
"moveq %0, %Q2 \n\t"
|
||||||
"eorne %0, %1, %R2, asr #31 \n\t"
|
"eorne %0, %1, %R2, asr #31 \n\t"
|
||||||
: "=r"(x), "=&r"(y) : "r"(a));
|
: "=r"(x), "=&r"(y) : "r"(a));
|
||||||
return x;
|
return x;
|
||||||
|
@ -443,8 +443,10 @@ void av_opt_set_defaults2(void *s, int mask, int flags)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case FF_OPT_TYPE_STRING:
|
case FF_OPT_TYPE_STRING:
|
||||||
|
av_set_string3(s, opt->name, opt->default_val.str, 1, NULL);
|
||||||
|
break;
|
||||||
case FF_OPT_TYPE_BINARY:
|
case FF_OPT_TYPE_BINARY:
|
||||||
/* Cannot set default for string as default_val is of type * double */
|
/* Cannot set default for binary */
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
av_log(s, AV_LOG_DEBUG, "AVOption type %d of option %s not implemented yet\n", opt->type, opt->name);
|
av_log(s, AV_LOG_DEBUG, "AVOption type %d of option %s not implemented yet\n", opt->type, opt->name);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user