Commit 8e31dbc1 authored by Michael Niedermayer's avatar Michael Niedermayer

Merge remote-tracking branch 'qatar/master'

* qatar/master:
  Fix a bunch of common typos.
  build: Skip compiling xvmc.h under the correct condition.
  configure: darwin: Change dylib install names to include major version.
  mpegts: Always honor a registration descriptor if present and there is no other codec information.
  aacdec: Fix SCE parity check.
  aacdec: Fix out of array writes (stack).
  rtsp: Only set the ttl parameter if the server actually gave a value
  udp: Set ttl for read-write streams, too, not only for write-only ones
  udp: Only bind to the multicast address if in read-only mode
  udp: Clarify the comment about binding the multicast address
  udp: Reorder comments

Conflicts:
	libavcodec/aacdec.c
	tools/patcheck
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents 1af9fdc3 ffae713a
...@@ -2652,7 +2652,7 @@ case $target_os in ...@@ -2652,7 +2652,7 @@ case $target_os in
enable malloc_aligned enable malloc_aligned
gas="gas-preprocessor.pl $cc" gas="gas-preprocessor.pl $cc"
enabled ppc && add_asflags -force_cpusubtype_ALL enabled ppc && add_asflags -force_cpusubtype_ALL
SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)' SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
strip="${strip} -x" strip="${strip} -x"
add_ldflags -Wl,-dynamic,-search_paths_first add_ldflags -Wl,-dynamic,-search_paths_first
......
...@@ -741,10 +741,10 @@ SKIPHEADERS += %_tablegen.h \ ...@@ -741,10 +741,10 @@ SKIPHEADERS += %_tablegen.h \
SKIPHEADERS-$(CONFIG_DXVA2) += dxva2.h dxva2_internal.h SKIPHEADERS-$(CONFIG_DXVA2) += dxva2.h dxva2_internal.h
SKIPHEADERS-$(CONFIG_LIBDIRAC) += libdirac.h SKIPHEADERS-$(CONFIG_LIBDIRAC) += libdirac.h
SKIPHEADERS-$(CONFIG_LIBSCHROEDINGER) += libschroedinger.h SKIPHEADERS-$(CONFIG_LIBSCHROEDINGER) += libschroedinger.h
SKIPHEADERS-$(CONFIG_MPEG_XVMC_DECODER) += xvmc.h
SKIPHEADERS-$(CONFIG_VAAPI) += vaapi_internal.h SKIPHEADERS-$(CONFIG_VAAPI) += vaapi_internal.h
SKIPHEADERS-$(CONFIG_VDA) += vda_internal.h SKIPHEADERS-$(CONFIG_VDA) += vda_internal.h
SKIPHEADERS-$(CONFIG_VDPAU) += vdpau.h SKIPHEADERS-$(CONFIG_VDPAU) += vdpau.h
SKIPHEADERS-$(CONFIG_XVMC) += xvmc.h
SKIPHEADERS-$(HAVE_W32THREADS) += w32pthreads.h SKIPHEADERS-$(HAVE_W32THREADS) += w32pthreads.h
TESTPROGS = cabac dct fft fft-fixed golomb iirfilter rangecoder snowenc TESTPROGS = cabac dct fft fft-fixed golomb iirfilter rangecoder snowenc
......
...@@ -227,7 +227,7 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) ...@@ -227,7 +227,7 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags)
int num_front_channels, num_side_channels, num_back_channels; int num_front_channels, num_side_channels, num_back_channels;
uint64_t layout; uint64_t layout;
if(FF_ARRAY_ELEMS(e2c_vec) < tags) if (FF_ARRAY_ELEMS(e2c_vec) < tags)
return 0; return 0;
i = 0; i = 0;
......
...@@ -483,7 +483,7 @@ static int decode(AVCodecContext *avctx, void *data, int *data_size, ...@@ -483,7 +483,7 @@ static int decode(AVCodecContext *avctx, void *data, int *data_size,
case WINDOW_SEGMENT: case WINDOW_SEGMENT:
/* /*
* Window Segment Structure (No new information provided): * Window Segment Structure (No new information provided):
* 2 bytes: Unkown, * 2 bytes: Unknown,
* 2 bytes: X position of subtitle, * 2 bytes: X position of subtitle,
* 2 bytes: Y position of subtitle, * 2 bytes: Y position of subtitle,
* 2 bytes: Width of subtitle, * 2 bytes: Width of subtitle,
......
...@@ -41,13 +41,13 @@ typedef struct { ...@@ -41,13 +41,13 @@ typedef struct {
int nentries; int nentries;
uint8_t *lens; uint8_t *lens;
uint32_t *codewords; uint32_t *codewords;
int ndimentions; int ndimensions;
float min; float min;
float delta; float delta;
int seq_p; int seq_p;
int lookup; int lookup;
int *quantlist; int *quantlist;
float *dimentions; float *dimensions;
float *pow2; float *pow2;
} vorbis_enc_codebook; } vorbis_enc_codebook;
...@@ -149,12 +149,12 @@ static inline int put_codeword(PutBitContext *pb, vorbis_enc_codebook *cb, ...@@ -149,12 +149,12 @@ static inline int put_codeword(PutBitContext *pb, vorbis_enc_codebook *cb,
return 0; return 0;
} }
static int cb_lookup_vals(int lookup, int dimentions, int entries) static int cb_lookup_vals(int lookup, int dimensions, int entries)
{ {
if (lookup == 1) if (lookup == 1)
return ff_vorbis_nth_root(entries, dimentions); return ff_vorbis_nth_root(entries, dimensions);
else if (lookup == 2) else if (lookup == 2)
return dimentions *entries; return dimensions *entries;
return 0; return 0;
} }
...@@ -165,28 +165,28 @@ static int ready_codebook(vorbis_enc_codebook *cb) ...@@ -165,28 +165,28 @@ static int ready_codebook(vorbis_enc_codebook *cb)
ff_vorbis_len2vlc(cb->lens, cb->codewords, cb->nentries); ff_vorbis_len2vlc(cb->lens, cb->codewords, cb->nentries);
if (!cb->lookup) { if (!cb->lookup) {
cb->pow2 = cb->dimentions = NULL; cb->pow2 = cb->dimensions = NULL;
} else { } else {
int vals = cb_lookup_vals(cb->lookup, cb->ndimentions, cb->nentries); int vals = cb_lookup_vals(cb->lookup, cb->ndimensions, cb->nentries);
cb->dimentions = av_malloc(sizeof(float) * cb->nentries * cb->ndimentions); cb->dimensions = av_malloc(sizeof(float) * cb->nentries * cb->ndimensions);
cb->pow2 = av_mallocz(sizeof(float) * cb->nentries); cb->pow2 = av_mallocz(sizeof(float) * cb->nentries);
if (!cb->dimentions || !cb->pow2) if (!cb->dimensions || !cb->pow2)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
for (i = 0; i < cb->nentries; i++) { for (i = 0; i < cb->nentries; i++) {
float last = 0; float last = 0;
int j; int j;
int div = 1; int div = 1;
for (j = 0; j < cb->ndimentions; j++) { for (j = 0; j < cb->ndimensions; j++) {
int off; int off;
if (cb->lookup == 1) if (cb->lookup == 1)
off = (i / div) % vals; // lookup type 1 off = (i / div) % vals; // lookup type 1
else else
off = i * cb->ndimentions + j; // lookup type 2 off = i * cb->ndimensions + j; // lookup type 2
cb->dimentions[i * cb->ndimentions + j] = last + cb->min + cb->quantlist[off] * cb->delta; cb->dimensions[i * cb->ndimensions + j] = last + cb->min + cb->quantlist[off] * cb->delta;
if (cb->seq_p) if (cb->seq_p)
last = cb->dimentions[i * cb->ndimentions + j]; last = cb->dimensions[i * cb->ndimensions + j];
cb->pow2[i] += cb->dimentions[i * cb->ndimentions + j] * cb->dimentions[i * cb->ndimentions + j]; cb->pow2[i] += cb->dimensions[i * cb->ndimensions + j] * cb->dimensions[i * cb->ndimensions + j];
div *= vals; div *= vals;
} }
cb->pow2[i] /= 2.; cb->pow2[i] /= 2.;
...@@ -211,17 +211,17 @@ static int ready_residue(vorbis_enc_residue *rc, vorbis_enc_context *venc) ...@@ -211,17 +211,17 @@ static int ready_residue(vorbis_enc_residue *rc, vorbis_enc_context *venc)
if (j == 8) // zero if (j == 8) // zero
continue; continue;
cb = &venc->codebooks[rc->books[i][j]]; cb = &venc->codebooks[rc->books[i][j]];
assert(cb->ndimentions >= 2); assert(cb->ndimensions >= 2);
assert(cb->lookup); assert(cb->lookup);
for (j = 0; j < cb->nentries; j++) { for (j = 0; j < cb->nentries; j++) {
float a; float a;
if (!cb->lens[j]) if (!cb->lens[j])
continue; continue;
a = fabs(cb->dimentions[j * cb->ndimentions]); a = fabs(cb->dimensions[j * cb->ndimensions]);
if (a > rc->maxes[i][0]) if (a > rc->maxes[i][0])
rc->maxes[i][0] = a; rc->maxes[i][0] = a;
a = fabs(cb->dimentions[j * cb->ndimentions + 1]); a = fabs(cb->dimensions[j * cb->ndimensions + 1]);
if (a > rc->maxes[i][1]) if (a > rc->maxes[i][1])
rc->maxes[i][1] = a; rc->maxes[i][1] = a;
} }
...@@ -257,7 +257,7 @@ static int create_vorbis_context(vorbis_enc_context *venc, ...@@ -257,7 +257,7 @@ static int create_vorbis_context(vorbis_enc_context *venc,
for (book = 0; book < venc->ncodebooks; book++) { for (book = 0; book < venc->ncodebooks; book++) {
vorbis_enc_codebook *cb = &venc->codebooks[book]; vorbis_enc_codebook *cb = &venc->codebooks[book];
int vals; int vals;
cb->ndimentions = cvectors[book].dim; cb->ndimensions = cvectors[book].dim;
cb->nentries = cvectors[book].real_len; cb->nentries = cvectors[book].real_len;
cb->min = cvectors[book].min; cb->min = cvectors[book].min;
cb->delta = cvectors[book].delta; cb->delta = cvectors[book].delta;
...@@ -272,7 +272,7 @@ static int create_vorbis_context(vorbis_enc_context *venc, ...@@ -272,7 +272,7 @@ static int create_vorbis_context(vorbis_enc_context *venc,
memset(cb->lens + cvectors[book].len, 0, cb->nentries - cvectors[book].len); memset(cb->lens + cvectors[book].len, 0, cb->nentries - cvectors[book].len);
if (cb->lookup) { if (cb->lookup) {
vals = cb_lookup_vals(cb->lookup, cb->ndimentions, cb->nentries); vals = cb_lookup_vals(cb->lookup, cb->ndimensions, cb->nentries);
cb->quantlist = av_malloc(sizeof(int) * vals); cb->quantlist = av_malloc(sizeof(int) * vals);
if (!cb->quantlist) if (!cb->quantlist)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
...@@ -454,7 +454,7 @@ static void put_codebook_header(PutBitContext *pb, vorbis_enc_codebook *cb) ...@@ -454,7 +454,7 @@ static void put_codebook_header(PutBitContext *pb, vorbis_enc_codebook *cb)
int ordered = 0; int ordered = 0;
put_bits(pb, 24, 0x564342); //magic put_bits(pb, 24, 0x564342); //magic
put_bits(pb, 16, cb->ndimentions); put_bits(pb, 16, cb->ndimensions);
put_bits(pb, 24, cb->nentries); put_bits(pb, 24, cb->nentries);
for (i = 1; i < cb->nentries; i++) for (i = 1; i < cb->nentries; i++)
...@@ -496,7 +496,7 @@ static void put_codebook_header(PutBitContext *pb, vorbis_enc_codebook *cb) ...@@ -496,7 +496,7 @@ static void put_codebook_header(PutBitContext *pb, vorbis_enc_codebook *cb)
put_bits(pb, 4, cb->lookup); put_bits(pb, 4, cb->lookup);
if (cb->lookup) { if (cb->lookup) {
int tmp = cb_lookup_vals(cb->lookup, cb->ndimentions, cb->nentries); int tmp = cb_lookup_vals(cb->lookup, cb->ndimensions, cb->nentries);
int bits = ilog(cb->quantlist[0]); int bits = ilog(cb->quantlist[0]);
for (i = 1; i < tmp; i++) for (i = 1; i < tmp; i++)
...@@ -848,13 +848,13 @@ static float *put_vector(vorbis_enc_codebook *book, PutBitContext *pb, ...@@ -848,13 +848,13 @@ static float *put_vector(vorbis_enc_codebook *book, PutBitContext *pb,
{ {
int i, entry = -1; int i, entry = -1;
float distance = FLT_MAX; float distance = FLT_MAX;
assert(book->dimentions); assert(book->dimensions);
for (i = 0; i < book->nentries; i++) { for (i = 0; i < book->nentries; i++) {
float * vec = book->dimentions + i * book->ndimentions, d = book->pow2[i]; float * vec = book->dimensions + i * book->ndimensions, d = book->pow2[i];
int j; int j;
if (!book->lens[i]) if (!book->lens[i])
continue; continue;
for (j = 0; j < book->ndimentions; j++) for (j = 0; j < book->ndimensions; j++)
d -= vec[j] * num[j]; d -= vec[j] * num[j];
if (distance > d) { if (distance > d) {
entry = i; entry = i;
...@@ -863,7 +863,7 @@ static float *put_vector(vorbis_enc_codebook *book, PutBitContext *pb, ...@@ -863,7 +863,7 @@ static float *put_vector(vorbis_enc_codebook *book, PutBitContext *pb,
} }
if (put_codeword(pb, book, entry)) if (put_codeword(pb, book, entry))
return NULL; return NULL;
return &book->dimentions[entry * book->ndimentions]; return &book->dimensions[entry * book->ndimensions];
} }
static int residue_encode(vorbis_enc_context *venc, vorbis_enc_residue *rc, static int residue_encode(vorbis_enc_context *venc, vorbis_enc_residue *rc,
...@@ -875,7 +875,7 @@ static int residue_encode(vorbis_enc_context *venc, vorbis_enc_residue *rc, ...@@ -875,7 +875,7 @@ static int residue_encode(vorbis_enc_context *venc, vorbis_enc_residue *rc,
int partitions = (rc->end - rc->begin) / psize; int partitions = (rc->end - rc->begin) / psize;
int channels = (rc->type == 2) ? 1 : real_ch; int channels = (rc->type == 2) ? 1 : real_ch;
int classes[MAX_CHANNELS][NUM_RESIDUE_PARTITIONS]; int classes[MAX_CHANNELS][NUM_RESIDUE_PARTITIONS];
int classwords = venc->codebooks[rc->classbook].ndimentions; int classwords = venc->codebooks[rc->classbook].ndimensions;
assert(rc->type == 2); assert(rc->type == 2);
assert(real_ch == 2); assert(real_ch == 2);
...@@ -916,15 +916,15 @@ static int residue_encode(vorbis_enc_context *venc, vorbis_enc_residue *rc, ...@@ -916,15 +916,15 @@ static int residue_encode(vorbis_enc_context *venc, vorbis_enc_residue *rc,
continue; continue;
assert(rc->type == 0 || rc->type == 2); assert(rc->type == 0 || rc->type == 2);
assert(!(psize % book->ndimentions)); assert(!(psize % book->ndimensions));
if (rc->type == 0) { if (rc->type == 0) {
for (k = 0; k < psize; k += book->ndimentions) { for (k = 0; k < psize; k += book->ndimensions) {
int l; int l;
float *a = put_vector(book, pb, &buf[k]); float *a = put_vector(book, pb, &buf[k]);
if (!a) if (!a)
return AVERROR(EINVAL); return AVERROR(EINVAL);
for (l = 0; l < book->ndimentions; l++) for (l = 0; l < book->ndimensions; l++)
buf[k + l] -= a[l]; buf[k + l] -= a[l];
} }
} else { } else {
...@@ -932,10 +932,10 @@ static int residue_encode(vorbis_enc_context *venc, vorbis_enc_residue *rc, ...@@ -932,10 +932,10 @@ static int residue_encode(vorbis_enc_context *venc, vorbis_enc_residue *rc,
a1 = (s % real_ch) * samples; a1 = (s % real_ch) * samples;
b1 = s / real_ch; b1 = s / real_ch;
s = real_ch * samples; s = real_ch * samples;
for (k = 0; k < psize; k += book->ndimentions) { for (k = 0; k < psize; k += book->ndimensions) {
int dim, a2 = a1, b2 = b1; int dim, a2 = a1, b2 = b1;
float vec[MAX_CODEBOOK_DIM], *pv = vec; float vec[MAX_CODEBOOK_DIM], *pv = vec;
for (dim = book->ndimentions; dim--; ) { for (dim = book->ndimensions; dim--; ) {
*pv++ = coeffs[a2 + b2]; *pv++ = coeffs[a2 + b2];
if ((a2 += samples) == s) { if ((a2 += samples) == s) {
a2 = 0; a2 = 0;
...@@ -945,7 +945,7 @@ static int residue_encode(vorbis_enc_context *venc, vorbis_enc_residue *rc, ...@@ -945,7 +945,7 @@ static int residue_encode(vorbis_enc_context *venc, vorbis_enc_residue *rc,
pv = put_vector(book, pb, vec); pv = put_vector(book, pb, vec);
if (!pv) if (!pv)
return AVERROR(EINVAL); return AVERROR(EINVAL);
for (dim = book->ndimentions; dim--; ) { for (dim = book->ndimensions; dim--; ) {
coeffs[a1 + b1] -= *pv++; coeffs[a1 + b1] -= *pv++;
if ((a1 += samples) == s) { if ((a1 += samples) == s) {
a1 = 0; a1 = 0;
...@@ -1098,7 +1098,7 @@ static av_cold int vorbis_encode_close(AVCodecContext *avccontext) ...@@ -1098,7 +1098,7 @@ static av_cold int vorbis_encode_close(AVCodecContext *avccontext)
av_freep(&venc->codebooks[i].lens); av_freep(&venc->codebooks[i].lens);
av_freep(&venc->codebooks[i].codewords); av_freep(&venc->codebooks[i].codewords);
av_freep(&venc->codebooks[i].quantlist); av_freep(&venc->codebooks[i].quantlist);
av_freep(&venc->codebooks[i].dimentions); av_freep(&venc->codebooks[i].dimensions);
av_freep(&venc->codebooks[i].pow2); av_freep(&venc->codebooks[i].pow2);
} }
av_freep(&venc->codebooks); av_freep(&venc->codebooks);
......
...@@ -1385,8 +1385,7 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type ...@@ -1385,8 +1385,7 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type
case 0x05: /* registration descriptor */ case 0x05: /* registration descriptor */
st->codec->codec_tag = bytestream_get_le32(pp); st->codec->codec_tag = bytestream_get_le32(pp);
av_dlog(fc, "reg_desc=%.4s\n", (char*)&st->codec->codec_tag); av_dlog(fc, "reg_desc=%.4s\n", (char*)&st->codec->codec_tag);
if (st->codec->codec_id == CODEC_ID_NONE && if (st->codec->codec_id == CODEC_ID_NONE)
stream_type == STREAM_TYPE_PRIVATE_DATA)
mpegts_find_stream_type(st, st->codec->codec_tag, REGD_types); mpegts_find_stream_type(st, st->codec->codec_tag, REGD_types);
break; break;
case 0x52: /* stream identifier descriptor */ case 0x52: /* stream identifier descriptor */
......
...@@ -288,7 +288,7 @@ static int r3d_read_reda(AVFormatContext *s, AVPacket *pkt, Atom *atom) ...@@ -288,7 +288,7 @@ static int r3d_read_reda(AVFormatContext *s, AVPacket *pkt, Atom *atom)
tmp = avio_rb32(s->pb); tmp = avio_rb32(s->pb);
av_dlog(s, "packet num %d\n", tmp); av_dlog(s, "packet num %d\n", tmp);
tmp = avio_rb16(s->pb); // unkown tmp = avio_rb16(s->pb); // unknown
av_dlog(s, "unknown %d\n", tmp); av_dlog(s, "unknown %d\n", tmp);
tmp = avio_r8(s->pb); // major version tmp = avio_r8(s->pb); // major version
......
...@@ -1345,7 +1345,7 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port, ...@@ -1345,7 +1345,7 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port,
break; break;
} }
case RTSP_LOWER_TRANSPORT_UDP_MULTICAST: { case RTSP_LOWER_TRANSPORT_UDP_MULTICAST: {
char url[1024], namebuf[50]; char url[1024], namebuf[50], optbuf[20] = "";
struct sockaddr_storage addr; struct sockaddr_storage addr;
int port, ttl; int port, ttl;
...@@ -1358,10 +1358,12 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port, ...@@ -1358,10 +1358,12 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port,
port = rtsp_st->sdp_port; port = rtsp_st->sdp_port;
ttl = rtsp_st->sdp_ttl; ttl = rtsp_st->sdp_ttl;
} }
if (ttl > 0)
snprintf(optbuf, sizeof(optbuf), "?ttl=%d", ttl);
getnameinfo((struct sockaddr*) &addr, sizeof(addr), getnameinfo((struct sockaddr*) &addr, sizeof(addr),
namebuf, sizeof(namebuf), NULL, 0, NI_NUMERICHOST); namebuf, sizeof(namebuf), NULL, 0, NI_NUMERICHOST);
ff_url_join(url, sizeof(url), "rtp", NULL, namebuf, ff_url_join(url, sizeof(url), "rtp", NULL, namebuf,
port, "?ttl=%d", ttl); port, "%s", optbuf);
if (ffurl_open(&rtsp_st->rtp_handle, url, AVIO_FLAG_READ_WRITE, if (ffurl_open(&rtsp_st->rtp_handle, url, AVIO_FLAG_READ_WRITE,
&s->interrupt_callback, NULL) < 0) { &s->interrupt_callback, NULL) < 0) {
err = AVERROR_INVALIDDATA; err = AVERROR_INVALIDDATA;
......
...@@ -473,13 +473,16 @@ static int udp_open(URLContext *h, const char *uri, int flags) ...@@ -473,13 +473,16 @@ static int udp_open(URLContext *h, const char *uri, int flags)
goto fail; goto fail;
} }
/* the bind is needed to give a port to the socket now */ /* If multicast, try binding the multicast address first, to avoid
/* if multicast, try the multicast address bind first */ * receiving UDP packets from other sources aimed at the same UDP
if (s->is_multicast && (h->flags & AVIO_FLAG_READ)) { * port. This fails on windows. This makes sending to the same address
* using sendto() fail, so only do it if we're opened in read-only mode. */
if (s->is_multicast && !(h->flags & AVIO_FLAG_WRITE)) {
bind_ret = bind(udp_fd,(struct sockaddr *)&s->dest_addr, len); bind_ret = bind(udp_fd,(struct sockaddr *)&s->dest_addr, len);
} }
/* bind to the local address if not multicast or if the multicast /* bind to the local address if not multicast or if the multicast
* bind failed */ * bind failed */
/* the bind is needed to give a port to the socket now */
if (bind_ret < 0 && bind(udp_fd,(struct sockaddr *)&my_addr, len) < 0) { if (bind_ret < 0 && bind(udp_fd,(struct sockaddr *)&my_addr, len) < 0) {
av_log(h, AV_LOG_ERROR, "bind failed: %s\n", strerror(errno)); av_log(h, AV_LOG_ERROR, "bind failed: %s\n", strerror(errno));
goto fail; goto fail;
...@@ -490,11 +493,12 @@ static int udp_open(URLContext *h, const char *uri, int flags) ...@@ -490,11 +493,12 @@ static int udp_open(URLContext *h, const char *uri, int flags)
s->local_port = udp_port(&my_addr, len); s->local_port = udp_port(&my_addr, len);
if (s->is_multicast) { if (s->is_multicast) {
if (!(h->flags & AVIO_FLAG_READ)) { if (h->flags & AVIO_FLAG_WRITE) {
/* output */ /* output */
if (udp_set_multicast_ttl(udp_fd, s->ttl, (struct sockaddr *)&s->dest_addr) < 0) if (udp_set_multicast_ttl(udp_fd, s->ttl, (struct sockaddr *)&s->dest_addr) < 0)
goto fail; goto fail;
} else { }
if (h->flags & AVIO_FLAG_READ) {
/* input */ /* input */
if (udp_join_multicast_group(udp_fd, (struct sockaddr *)&s->dest_addr) < 0) if (udp_join_multicast_group(udp_fd, (struct sockaddr *)&s->dest_addr) < 0)
goto fail; goto fail;
......
...@@ -97,7 +97,7 @@ int main(int argc, char **argv) ...@@ -97,7 +97,7 @@ int main(int argc, char **argv)
} }
if (avfilter_open(&filter_ctx, filter, NULL) < 0) { if (avfilter_open(&filter_ctx, filter, NULL) < 0) {
fprintf(stderr, "Inpossible to open filter with name '%s'\n", fprintf(stderr, "Impossible to open filter with name '%s'\n",
filter_name); filter_name);
return 1; return 1;
} }
......
...@@ -67,8 +67,7 @@ $EGREP $OPT '^\+ *(const *|)static' $*| $EGREP --color=always '[^=]= *(0|NULL)[^ ...@@ -67,8 +67,7 @@ $EGREP $OPT '^\+ *(const *|)static' $*| $EGREP --color=always '[^=]= *(0|NULL)[^
cat $TMP cat $TMP
hiegrep '# *ifdef * (HAVE|CONFIG)_' 'ifdefs that should be #if' $* hiegrep '# *ifdef * (HAVE|CONFIG)_' 'ifdefs that should be #if' $*
hiegrep '\b(awnser|cant|dont|wont|usefull|successfull|occured|teh|alot|wether|skiped|heigth|informations|colums|loosy|loosing|ouput|seperate|preceed|upto|paket|posible)\b' 'common typos' $* hiegrep '\b(awnser|cant|dont|wont|usefull|successfull|occured|teh|alot|wether|skiped|heigth|informations|colums|loosy|loosing|ouput|seperate|preceed|upto|paket|posible|unkown|inpossible|dimention)\b' 'common typos' $*
hiegrep 'av_log\( *NULL' 'Missing context in av_log' $* hiegrep 'av_log\( *NULL' 'Missing context in av_log' $*
hiegrep '[^sn]printf' 'Please use av_log' $* hiegrep '[^sn]printf' 'Please use av_log' $*
hiegrep '\bmalloc' 'Please use av_malloc' $* hiegrep '\bmalloc' 'Please use av_malloc' $*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment