[issue2607] Creating m4a (aac) does not correctly fill the bitrate file header tag

2011-02-15 Thread Antonio J. de Oliveira

New submission from Antonio J. de Oliveira ajolive...@ajoliveira.com:

There are players not supporting the ~0 tag

ffmpeg -ab 256k -i input.flac output.m4a

--
messages: 13676
priority: normal
status: new
substatus: new
title: Creating m4a (aac) does not correctly fill the bitrate file header tag
type: bug


FFmpeg issue tracker iss...@roundup.ffmpeg.org
https://roundup.ffmpeg.org/issue2607



[issue2608] bug in libavformat/os_support.c poll function under mingw32

2011-02-15 Thread Max

New submission from Max shakhmetov@gmail.com:

$ gdb ffmpeg_g.exe
GNU gdb (GDB) 7.1
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type show 
copying
and show warranty for details.
This GDB was configured as mingw32.
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/...
Reading symbols from c:\disk\ffmpeg-0.6.1\ffmpeg/ffmpeg_g.exe...done.
(gdb) run -v 9 -loglevel 99 -i rtsp://194.24.241.164/live.sdp?tcp -
acodec none -y video4.flv
Starting program: c:\disk\ffmpeg-0.6.1\ffmpeg/ffmpeg_g.exe -v 9 -
loglevel 99 -i rtsp://194.24.241.164/live.sdp?tcp -acod
ec none -y video4.flv
[New Thread 20848.0x26dc]
FFmpeg version git-8ed4cc6, Copyright (c) 2000-2011 the FFmpeg 
developers
  built on Feb 15 2011 18:27:37 with gcc 4.5.0
  configuration: --enable-memalign-hack --prefix=/c/disk/ffmpeg-
0.6.1/build --enable-gpl --enable-version3 --enable-nonf
ree
  libavutil50. 37. 0 / 50. 37. 0
  libavcore 0. 16. 1 /  0. 16. 1
  libavcodec   52.113. 1 / 52.113. 1
  libavformat  52.100. 1 / 52.100. 1
  libavdevice  52.  2. 3 / 52.  2. 3
  libavfilter   1. 76. 0 /  1. 76. 0
  libswscale0. 12. 0 /  0. 12. 0
[New Thread 20848.0x2b10]

Program received signal SIGSEGV, Segmentation fault.
0x77186395 in select () from C:\Windows\syswow64\ws2_32.dll

(gdb) bt
#0  0x77186395 in select () from C:\Windows\syswow64\ws2_32.dll
#1  0x00435231 in ff_freeaddrinfo (res=0x5b28) at 
libavformat/os_support.c:150
#2  0x004be4af in tcp_open (h=0x2bc31c0, uri=0x31dc Address 0x31dc out 
of bounds, flags=2) at libavformat/tcp.c:113
#3  0x0fed in ?? ()
#4  0x02bc31c0 in ?? ()
#5  0x0002 in ?? ()
#6  0x0001 in ?? ()
#7  0x in ?? ()

It's occurs cause the select return not greatest fd number, but fd 
count.
man: On  success,  select()  and  pselect()  return  the number of file 
descriptors contained in the three returned descriptor sets (that is, 
the total number of bits that are set in readfds, writefds, exceptfds) 
which may  be zero  if  the timeout expires before anything interesting 
happens.

in second for loop must be in that form:

for(i = 0; i  (nfds_t) numfds; i++) {
...
}



All function:


int poll(struct pollfd *fds, nfds_t numfds, int timeout)
{
fd_set read_set;
fd_set write_set;
fd_set exception_set;
nfds_t i;
int n;
int rc;

#if HAVE_WINSOCK2_H
if (numfds = FD_SETSIZE) {
errno = EINVAL;
return -1;
}
#endif

FD_ZERO(read_set);
FD_ZERO(write_set);
FD_ZERO(exception_set);

n = -1;
for(i = 0; i  numfds; i++) {
if (fds[i].fd  0)
continue;
#if !HAVE_WINSOCK2_H
if (fds[i].fd = FD_SETSIZE) {
errno = EINVAL;
return -1;
}
#endif

if (fds[i].events  POLLIN)  FD_SET(fds[i].fd, read_set);
if (fds[i].events  POLLOUT) FD_SET(fds[i].fd, write_set);
if (fds[i].events  POLLERR) FD_SET(fds[i].fd, exception_set);

if (fds[i].fd  n)
n = fds[i].fd;
};

if (n == -1)
/* Hey!? Nothing to poll, in fact!!! */
return 0;

if (timeout  0)
rc = select(n+1, read_set, write_set, exception_set, NULL);
else {
struct timevaltv;

tv.tv_sec = timeout / 1000;
tv.tv_usec = 1000 * (timeout % 1000);
rc = select(n+1, read_set, write_set, exception_set, tv);
};

if (rc  0)
return rc;

for(i = 0; i  (nfds_t) numfds; i++) {
fds[i].revents = 0;

if (FD_ISSET(fds[i].fd, read_set))  fds[i].revents |= 
POLLIN;
if (FD_ISSET(fds[i].fd, write_set)) fds[i].revents |= 
POLLOUT;
if (FD_ISSET(fds[i].fd, exception_set)) fds[i].revents |= 
POLLERR;
};

return rc;
}

--
messages: 13677
priority: normal
status: new
substatus: new
title: bug in libavformat/os_support.c poll function under mingw32
type: bug


FFmpeg issue tracker iss...@roundup.ffmpeg.org
https://roundup.ffmpeg.org/issue2608



[issue2609] FFMPEG isn't using multiple threads automatically

2011-02-15 Thread Reado

New submission from Reado d.re...@readesgroupservices.com:

FFmpeg version git-8ed4cc6, Copyright (c) 2000-2011 the FFmpeg developers
  built on Feb 15 2011 15:35:38 with gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
  configuration: --prefix=/usr --enable-shared --enable-gpl --enable-nonfree
--enable-version3 --enable-pthreads --enable-postproc --enable-libx264
--enable-libfaac
  libavutil50. 37. 0 / 50. 37. 0
  libavcore 0. 16. 1 /  0. 16. 1
  libavcodec   52.113. 1 / 52.113. 1
  libavformat  52.100. 1 / 52.100. 1
  libavdevice  52.  2. 3 / 52.  2. 3
  libavfilter   1. 76. 0 /  1. 76. 0
  libswscale0. 12. 0 /  0. 12. 0
  libpostproc  51.  2. 0 / 51.  2. 0

Command: ffmpeg -i 20110211_092600.MTS -acodec libfaac -ab 128k -ac 2 -ar 44100
-vcodec libx264 -vpre slow -vf yadif=1,scale=854:480 -b 2000k -qmin 22 -qmax 27
-aspect 16:9 -threads 0 -f mp4 -y part1.mp4

Using the command above, FFMPEG doesn't use multiple threads. It used to, but
recently it's stopped doing it. I have to change the threads value to something
other than 0 to get it to use multiple threads. For example, changing it to 4 or
8 and 300% or more CPU is used. Whereas if it's set to 0, less than 100% CPU is
used.

My server has 2 CPUs (8 cores) with 4GB RAM and I'm running CentOS 5.5 x64.

--
messages: 13678
priority: normal
status: new
substatus: new
title: FFMPEG isn't using multiple threads automatically
type: bug


FFmpeg issue tracker iss...@roundup.ffmpeg.org
https://roundup.ffmpeg.org/issue2609



[issue2608] bug in libavformat/os_support.c poll function under mingw32

2011-02-15 Thread Luca Barbato

Luca Barbato lu_z...@gentoo.org added the comment:

You are right, I'll send a patch to the ml now, I'm using the roundup data for
the attribution.

--
status: new - open
substatus: new - approved


FFmpeg issue tracker iss...@roundup.ffmpeg.org
https://roundup.ffmpeg.org/issue2608



[issue2598] The mp3 decoder is highly unpredictable

2011-02-15 Thread Reimar Döffinger

Reimar Döffinger b...@reimardoeffinger.de added the comment:

On Mon, Feb 14, 2011 at 01:23:32PM +, Karl Blomster wrote:
 I'm not qualified to argue about whether the flushing is technically wrong or
 not, but I'd certainly agree it's suboptimal since with other decoders it
 generally IS possible to implement decently working random access.

Decently working should be possible, but not bit-exact to decoding from the 
start.
You could try fixing it yourself, in libavcodec/mpegaudiodec.c there is a flush 
function.
It memsets synth_buf to 0.
Try to find the mimimum number of other things you also have to set to 0 to fix 
it,
the possibly relevant things should be
last_buf + last_buf_size
synth_buf_offset
sb_samples
mdct_buf
granules


FFmpeg issue tracker iss...@roundup.ffmpeg.org
https://roundup.ffmpeg.org/issue2598



[issue2610] Complete your registration to FFmpeg issue tracker -- keyitMCCGUtN0Ke8Ar7RtwOwHlvUzNs3J7y

2011-02-15 Thread David Shaw

New submission from David Shaw david.s...@s-and-t.com:

Dave
ST

--
messages: 13681
priority: normal
status: new
substatus: new
title: Complete your registration to FFmpeg issue tracker -- 
keyitMCCGUtN0Ke8Ar7RtwOwHlvUzNs3J7y


FFmpeg issue tracker iss...@roundup.ffmpeg.org
https://roundup.ffmpeg.org/issue2610



[issue2611] bug in libavcodec/tcp.c

2011-02-15 Thread Max

New submission from Max shakhmetov@gmail.com:

1. functions tcp_read and tcp_write is performing analyze  of 
URLContext::flags is URL_FLAG_NONBLOCK setted or not. But 
URL_FLAG_NONBLOCK is never set. Seems that in function tcp_open it must 
be set.
2. function tcp_read must have cycle for read all data. Now the function 
wait noly 100ms for incoming data. It's wrong. Seems that it must be 
like udp_read. 
3. function tcp_write must have cycle for read all data. Now the 
function wait noly 100ms for incoming data. It's wrong. Seems that it 
must be like udp_write.

For example:


static int tcp_read(URLContext *h, uint8_t *buf, int size)
{
TCPContext *s = h-priv_data;
struct pollfd p = {s-fd, POLLIN, 0};
int len = 0;
int ret;

if ( 0 != (h-flags  URL_FLAG_NONBLOCK) ) {
for ( ; 0  size ; ) {
if ( url_interrupt_cb() )
return AVERROR(EINTR);
ret = poll(p, 1, 100);
if (ret  0) {
if ( ff_neterrno() == FF_NETERROR(EINTR) 
)
continue;
return AVERROR(EIO);
}
if ( !(ret == 1  p.revents  POLLIN) )
continue;
ret = recv(s-fd, buf, size, 0);
if (ret  0) {
if (ff_neterrno() != FF_NETERROR(EAGAIN) 

ff_neterrno() != 
FF_NETERROR(EINTR))
return AVERROR(EIO);
} else {
size -= ret;
buf += ret;
len += ret;
}
}
} else {
len = recv(s-fd, buf, size, 0);
}
return len;
}

/**/

static int tcp_write(URLContext *h, const uint8_t *buf, int size)
{
TCPContext *s = h-priv_data;
struct pollfd p = {s-fd, POLLOUT, 0};
int len = 0;
int ret;

if ( 0 != (h-flags  URL_FLAG_NONBLOCK) ) {
for ( ; 0  size ; ) {
if ( url_interrupt_cb() )
return AVERROR(EINTR);
ret = poll(p, 1, 100);
if (ret  0) {
if ( ff_neterrno() == FF_NETERROR(EINTR) 
)
continue;
return AVERROR(EIO);
}
if ( !(ret == 1  p.revents  POLLOUT) )
continue;
ret = send(s-fd, buf, size, 0);
if (ret  0) {
if (ff_neterrno() != FF_NETERROR(EAGAIN) 

ff_neterrno() != 
FF_NETERROR(EINTR))
return AVERROR(EIO);
} else {
size -= ret;
buf += ret;
len += ret;
}
}
} else {
len = send(s-fd, buf, size, 0);
}
return len;
}
static int tcp_write(URLContext *h, const uint8_t *buf, int size)
{
TCPContext *s = h-priv_data;
struct pollfd p = {s-fd, POLLOUT, 0};
int len = 0;
int ret;

if ( 0 != (h-flags  URL_FLAG_NONBLOCK) ) {
for ( ; 0  size ; ) {
if ( url_interrupt_cb() )
return AVERROR(EINTR);
ret = poll(p, 1, 100);
if (ret  0) {
if ( ff_neterrno() == FF_NETERROR(EINTR) 
)
continue;
return AVERROR(EIO);
}
if ( !(ret == 1  p.revents  POLLOUT) )
continue;
ret = send(s-fd, buf, size, 0);
if (ret  0) {
if (ff_neterrno() != FF_NETERROR(EAGAIN) 

ff_neterrno() != 
FF_NETERROR(EINTR))
return AVERROR(EIO);
} else {
size -= ret;
buf += ret;
len += ret;
}
}
} else {
len = send(s-fd, buf, size, 0);
}
return len;
}

--
messages: 13682
priority: normal
status: new
substatus: new
title: bug in libavcodec/tcp.c
type: bug


FFmpeg issue tracker iss...@roundup.ffmpeg.org

[issue2611] bug in libavcodec/tcp.c

2011-02-15 Thread Max

Max shakhmetov@gmail.com added the comment:

1. functions tcp_read and tcp_write is performing analyze  of 
URLContext::flags is URL_FLAG_NONBLOCK setted or not. But 
URL_FLAG_NONBLOCK is never set. Seems that in function tcp_open it must 
be set.
2. function tcp_read must have cycle for read all data. Now the function 
wait only 100ms for incoming data. It's wrong. Seems that it must be 
like udp_read. 
3. function tcp_write must have cycle for read all data. Now the 
function wait only 100ms for send buffer. It's wrong. Seems that it 
must be like udp_write.


static int tcp_read(URLContext *h, uint8_t *buf, int size)
{
TCPContext *s = h-priv_data;
struct pollfd p = {s-fd, POLLIN, 0};
int len = 0;
int ret;

if ( 0 != (h-flags  URL_FLAG_NONBLOCK) ) {
for ( ; 0  size ; ) {
if ( url_interrupt_cb() )
return AVERROR(EINTR);
ret = poll(p, 1, 100);
if (ret  0) {
if ( ff_neterrno() == FF_NETERROR(EINTR) 
)
continue;
return AVERROR(EIO);
}
if ( !(ret == 1  p.revents  POLLIN) )
continue;
ret = recv(s-fd, buf, size, 0);
if (ret  0) {
if (ff_neterrno() != FF_NETERROR(EAGAIN) 

ff_neterrno() != 
FF_NETERROR(EINTR))
return AVERROR(EIO);
} else {
size -= ret;
buf += ret;
len += ret;
}
}
} else {
len = recv(s-fd, buf, size, 0);
}
return len;
}



static int tcp_write(URLContext *h, const uint8_t *buf, int size)
{
TCPContext *s = h-priv_data;
struct pollfd p = {s-fd, POLLOUT, 0};
int len = 0;
int ret;

if ( 0 != (h-flags  URL_FLAG_NONBLOCK) ) {
for ( ; 0  size ; ) {
if ( url_interrupt_cb() )
return AVERROR(EINTR);
ret = poll(p, 1, 100);
if (ret  0) {
if ( ff_neterrno() == FF_NETERROR(EINTR) 
)
continue;
return AVERROR(EIO);
}
if ( !(ret == 1  p.revents  POLLOUT) )
continue;
ret = send(s-fd, buf, size, 0);
if (ret  0) {
if (ff_neterrno() != FF_NETERROR(EAGAIN) 

ff_neterrno() != 
FF_NETERROR(EINTR))
return AVERROR(EIO);
} else {
size -= ret;
buf += ret;
len += ret;
}
}
} else {
len = send(s-fd, buf, size, 0);
}
return len;
}


FFmpeg issue tracker iss...@roundup.ffmpeg.org
https://roundup.ffmpeg.org/issue2611



[issue2612] bug in libavformat/rtspdec.c in rtsp_read_packet

2011-02-15 Thread Max

New submission from Max shakhmetov@gmail.com:

rtsp_read_packet try resetup RTSP using tcp, but lower_transport not 
changed for RTSP_LOWER_TRANSPORT_TCP. Then RTSP stack call 
ff_rtsp_fetch_packet, analyze lower_transport that equal to 
RTSP_LOWER_TRANSPORT_UDP, call udp_read_packet and crashes.

--
messages: 13684
priority: normal
status: new
substatus: new
title: bug in libavformat/rtspdec.c in rtsp_read_packet
type: bug


FFmpeg issue tracker iss...@roundup.ffmpeg.org
https://roundup.ffmpeg.org/issue2612



[issue2611] bug in libavcodec/tcp.c

2011-02-15 Thread Ronald S. Bultje

Ronald S. Bultje rsbul...@gmail.com added the comment:

Please use url_open()/url_read()/url_write(), they take care of the stuff 
you're trying to do.

--
status: new - closed
substatus: new - invalid


FFmpeg issue tracker iss...@roundup.ffmpeg.org
https://roundup.ffmpeg.org/issue2611



[issue2612] bug in libavformat/rtspdec.c in rtsp_read_packet

2011-02-15 Thread Luca Barbato

Luca Barbato lu_z...@gentoo.org added the comment:

Could you please provide a backtrace and/or a test feed?


FFmpeg issue tracker iss...@roundup.ffmpeg.org
https://roundup.ffmpeg.org/issue2612



[issue2611] bug in libavcodec/tcp.c

2011-02-15 Thread Max

Max shakhmetov@gmail.com added the comment:

url_open()/url_read()/url_write() - is only wrappers for tcp_open, 
tcp_read, tcp_write

you can try 
ffmpeg -analyzeduration 0 -v 9 -loglevel 99 -i 
rtsp://194.24.241.164/live.sdp?tcp -an -y video.flv

and you receive inavlid data read
but with my functions it's work fine


FFmpeg issue tracker iss...@roundup.ffmpeg.org
https://roundup.ffmpeg.org/issue2611



[issue421] Support for WMA lossless

2011-02-15 Thread Andrew Pantyukhin

Andrew Pantyukhin infofar...@cenkes.org added the comment:

My current employer would find an open-source wma-lossless decoder beneficial.
We can provide funding from $1000 and more. I'm bumping priority to important,
please bump back if not adequate.

--
priority: wish - important


FFmpeg issue tracker iss...@roundup.ffmpeg.org
https://roundup.ffmpeg.org/issue421