В сообщении от Tuesday 23 October 2007 06:55:29 SIEGERSTEIN написал(а):
> В сообщении от Tuesday 23 October 2007 05:46:27 SIEGERSTEIN написал(а):
> > В сообщении от Tuesday 23 October 2007 05:12:28 SIEGERSTEIN написал(а):
> > > [encode_x264.so] using cpu capabilities: MMX MMXEXT SSE SSE2 3DNow!
> > > Floating point exception
> > > $
> >
> > OK. I understand. By default, transcode compile with 3DNow! support:
> >
> > $ ./configure --help
> > ..
> > --enable-mmx enable MMX code portions (yes)
> > --enable-3dnow enable 3DNow code portions (yes)
> > --enable-sse enable SSE code portions (yes)
> > --enable-sse2 enable SSE2 code portions (yes)
> > --enable-altivec enable Altivec code portions (yes)
> > ..
> >
> > May be so "Floating point exception" is take effect?
> >
> > I have Intel Pentium Presott Processor, so there is no 3DNow!
> > instruction.
> >
> > I recompile transcode with --disable-3dnow, but take the same result.
> > Is this right option? Why it not working? Why encode_x264.so build with
> > 3DNow! support ?
> >
> > Best,
>
> It seems that the problem in x264 encoder:
>
> gdb
> GNU gdb 6.7
> Copyright (C) 2007 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 "i686-pc-linux-gnu".
> (gdb) file transcode
> Reading symbols from /usr/bin/transcode...done.
> Using host libthread_db library "/lib/libthread_db.so.1".
> (gdb) set args -x v4l2,v4l2 -g 640x480 -i /dev/video0 -p /dev/dsp -y
> x264,lame,avi -N h264,mp3 -o video_out.avi
> (gdb) run
> Starting program: /usr/bin/transcode -x v4l2,v4l2 -g
> 640x480 -i /dev/video0 -p /dev/dsp -y x264,lame,avi -N h264,mp3 -o
> video_out.avi
> [Thread debugging using libthread_db enabled]
> [New Thread 0xb7bb16c0 (LWP 14433)]
> transcode v1.1.0-alpha4 (C) 2001-2003 Thomas Oestreich, 2003-2007 Transcode
> Team
> [transcode] V: auto-probing | /dev/video0 (OK)
> [transcode] V: import format | (null) in (module=v4l2)
> [transcode] A: auto-probing | /dev/dsp (OK)
> [transcode] A: import format | PCM in (module=v4l2)
> [transcode] V: AV demux/sync | (1) sync AV at initial MPEG sequence
> [transcode] V: import frame | 640x480 1.33:1 encoded @ UNKNOWN
> [transcode] V: bits/pixel | 0.234
> [transcode] V: decoding fps,frc | 25.000,3
> [transcode] V: video format | YUV420 (4:2:0) aka I420
> [transcode] A: import format | 0x1 PCM [48000,16,2]
> [transcode] A: export format | 0x55 MPEG ES Layer 3 [48000,16,2] 128
> kbps
> [transcode] V: export format | h264
> [transcode] V: encoding fps,frc | 25.000,3
> [transcode] A: bytes per frame | 7680 (7680.000000)
> [transcode] A: adjustment | [EMAIL PROTECTED]
> [transcode] V: IA32/AMD64 accel | sse3 sse2 sse mmx cmove asm
> [transcode] V: video buffer | 10 @ 640x480 [0x2]
> [transcode] A: audio buffer | 10 @ 48000x2x16
> [import_v4l2.so] v1.4.0 (2005-10-08) (video) v4l2 | (audio) pcm
> [encode_lame.so] v1.1 (2006-11-01) Encodes audio to MP3 using LAME
> [encode_lame.so] Using LAME 3.97
> [encode_x264.so] v0.2.1 (2006-01-27) x264 encoder
> [multiplex_avi.so] v0.0.2 (2005-12-29) create an AVI stream using avilib
> [New Thread 0xa5a5bb90 (LWP 14438)]
> [New Thread 0xa525ab90 (LWP 14439)]
> [New Thread 0xa4a59b90 (LWP 14440)]
> [import_v4l2.so] v4l2 audio grabbing
> [import_v4l2.so] v4l2 video grabbing
> [import_v4l2.so] resync disabled
> [import_v4l2.so] video grabbing, driver = saa7134, card = AverMedia AverTV
> Studio 305
> [import_v4l2.so] Pixel format conversion: YUV420 [planar] -> YUV420
> [planar] (no conversion)
> [import_v4l2.so] warning: driver does not support setting parameters
> (ioctl(VIDIOC_S_PARM) returns "Invalid argument")
> [import_v4l2.so] checking colour & framerate standards:
> [import_v4l2.so] [PAL]
> [import_v4l2.so] receiving 25 frames / sec
> [import_v4l2.so] frame size: 640x480
> [import_v4l2.so] cropcap bounds: 720x578 +0+46
> [import_v4l2.so] cropcap defrect: 720x576 +0+48
> [import_v4l2.so] cropcap pixelaspect: 54/59
> [import_v4l2.so] default cropping: 720x576 +0+48
> [import_v4l2.so] 8 buffers available
> [New Thread 0xa3ed0b90 (LWP 14441)]
> [New Thread 0xa36cfb90 (LWP 14442)]
> [encode_x264.so] set display aspect ratio to input
> [encode_x264.so] using SAR=1/1
> [encode_x264.so] using cpu capabilities: MMX MMXEXT SSE SSE2 3DNow!
>
> [encode_x264.so] using cpu capabilities: MMX MMXEXT SSE SSE2 3DNow!
encoder/encoder.c: (x264)
675 x264_log( h, X264_LOG_INFO, "using cpu
capabilities: %s%s%s%s%s%s%s%s\n",
676 param->cpu&X264_CPU_MMX ? "MMX " : "",
677 param->cpu&X264_CPU_MMXEXT ? "MMXEXT " : "",
678 param->cpu&X264_CPU_SSE ? "SSE " : "",
679 param->cpu&X264_CPU_SSE2 ? "SSE2 " : "",
680 param->cpu&X264_CPU_SSSE3 ? "SSSE3 " : "",
681 param->cpu&X264_CPU_3DNOW ? "3DNow! " : "",
682 param->cpu&X264_CPU_ALTIVEC ? "Altivec " : "",
683 param->cpu ? "" : "none!" );
> Program received signal SIGFPE, Arithmetic exception.
> [Switching to Thread 0xb7bb16c0 (LWP 14433)]
> 0xa5aa4321 in get_qscale (h=0x80d47a0, rce=0xbf991688,
> rate_factor=64.667029215144737, frame_num=<value optimized out>) at
> encoder/ratecontrol.c:1003
> 1003 };
> (gdb)
>
>
> encoder/ratecontrol.c from x264:
> ...
> 974 /**
> 975 * modify the bitrate curve from pass1 for one frame
> 976 */
> 977 static double get_qscale(x264_t *h, ratecontrol_entry_t *rce,
> double rate_factor, int frame_num)
> 978 {
> 979 x264_ratecontrol_t *rcc= h->rc;
> 980 const int pict_type = rce->pict_type;
> 981 double q;
> 982 x264_zone_t *zone = get_zone( h, frame_num );
> 983
> 984 double const_values[]={
> 985 rce->i_tex_bits * rce->qscale,
> 986 rce->p_tex_bits * rce->qscale,
> 987 (rce->i_tex_bits + rce->p_tex_bits) * rce->qscale,
> 988 rce->mv_bits * rce->qscale,
> 989 (double)rce->i_count / rcc->nmb,
> 990 (double)rce->p_count / rcc->nmb,
> 991 (double)rce->s_count / rcc->nmb,
> 992 rce->pict_type == SLICE_TYPE_I,
> 993 rce->pict_type == SLICE_TYPE_P,
> 994 rce->pict_type == SLICE_TYPE_B,
> 995 h->param.rc.f_qcompress,
> 996 rcc->i_cplx_sum[SLICE_TYPE_I] /
> rcc->frame_count[SLICE_TYPE_I],
> 997 rcc->i_cplx_sum[SLICE_TYPE_P] /
> rcc->frame_count[SLICE_TYPE_P],
> 998 rcc->p_cplx_sum[SLICE_TYPE_P] /
> rcc->frame_count[SLICE_TYPE_P],
> 999 rcc->p_cplx_sum[SLICE_TYPE_B] /
> rcc->frame_count[SLICE_TYPE_B],
> 1000 (rcc->i_cplx_sum[pict_type] + rcc->p_cplx_sum[pict_type]) /
> rcc->frame_count[pict_type],
> 1001 rce->blurred_complexity,
> 1002 0
> 1003 };
> 1004 static const char *const_names[]={
> 1005 "iTex",
> 1006 "pTex",
> 1007 "tex",
> ....