<br><br><div class="gmail_quote">2009/8/25 Jason Garrett-Glaser <span dir="ltr">&lt;<a href="mailto:darkshikari@gmail.com">darkshikari@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Tue, Aug 25, 2009 at 11:44 AM, Alessandro<br>
<div><div></div><div class="h5">Ferrari&lt;<a href="mailto:alessandroferrari87@gmail.com">alessandroferrari87@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt; 2009/8/25 Jason Garrett-Glaser &lt;<a href="mailto:darkshikari@gmail.com">darkshikari@gmail.com</a>&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Tue, Aug 25, 2009 at 11:12 AM, Alessandro<br>
&gt;&gt; Ferrari&lt;<a href="mailto:alessandroferrari87@gmail.com">alessandroferrari87@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; 2009/8/25 Jason Garrett-Glaser &lt;<a href="mailto:darkshikari@gmail.com">darkshikari@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Tue, Aug 25, 2009 at 10:51 AM, Alessandro<br>
&gt;&gt; &gt;&gt; Ferrari&lt;<a href="mailto:alessandroferrari87@gmail.com">alessandroferrari87@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt; 2009/8/25 Jason Garrett-Glaser &lt;<a href="mailto:darkshikari@gmail.com">darkshikari@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; On Tue, Aug 25, 2009 at 2:57 AM, Alessandro<br>
&gt;&gt; &gt;&gt; &gt;&gt; Ferrari&lt;<a href="mailto:alessandroferrari87@gmail.com">alessandroferrari87@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; Hi dear community,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;                              I have a problem with the encoding<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; using<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; x264.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; After I call x264_encoder_encode( h, &amp;nal, &amp;i_nal, pic, &amp;pic_out)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; function<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; I have nal= NULL, i_nal=0 and the function return 0. I&#39;m sure that<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; pic<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; contain the correct image. The x264_t h is open using the default<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; parameters, i only change width and length of the video. The<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; function<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; don&#39;t<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; give me any error, it seems that it not encode any data. I include<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; code<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; of encoding function that I implement watching x264.c.<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; x264 has an encoding delay depending on your parameters; it will not<br>
&gt;&gt; &gt;&gt; &gt;&gt; return frames until a number of frames have been inputted.  This<br>
&gt;&gt; &gt;&gt; &gt;&gt; delay<br>
&gt;&gt; &gt;&gt; &gt;&gt; is used for lookahead purposes.  Keep inputting frames and you will<br>
&gt;&gt; &gt;&gt; &gt;&gt; eventually get frames out.<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; Dark Shikari<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; I have a strange error when i try to access  at the fields of x264_t.<br>
&gt;&gt; &gt;&gt; &gt; I<br>
&gt;&gt; &gt;&gt; &gt; have<br>
&gt;&gt; &gt;&gt; &gt; this compilation error:<br>
&gt;&gt; &gt;&gt; &gt; transcoder.c:173: error: dereferencing pointer to incomplete type<br>
&gt;&gt; &gt;&gt; &gt; The automatic code completion of my ide don&#39;t find any fields for the<br>
&gt;&gt; &gt;&gt; &gt; pointer at x264_t h, but the compiler correct recognize the presence<br>
&gt;&gt; &gt;&gt; &gt; of<br>
&gt;&gt; &gt;&gt; &gt; the<br>
&gt;&gt; &gt;&gt; &gt; type x264_t. I include on the x264.h header. Can this the cause of<br>
&gt;&gt; &gt;&gt; &gt; problem?<br>
&gt;&gt; &gt;&gt; &gt; Many thanks.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; x264_t is an opaque handler for the encoder; you are not supposed to<br>
&gt;&gt; &gt;&gt; be able to access its internal variables.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Dark Shikari<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Ok, now I understand. I have any possibilities to change this frame<br>
&gt;&gt; &gt; delay?<br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;&gt; The encoder-side frame delay is as follows (measured in frames):<br>
&gt;&gt;<br>
&gt;&gt; With b-adapt = 0 or 1:<br>
&gt;&gt; MAX( param.rc.i_lookahead, param.i_bframes ) + threads - 1<br>
&gt;&gt;<br>
&gt;&gt; With b-adapt = 2:<br>
&gt;&gt; MAX( param.rc.i_lookahead, MAX(param.i_bframes,3)*4 ) + threads - 1<br>
&gt;&gt;<br>
&gt;&gt; Note that both VBV lookahead (for increased VBV quality and<br>
&gt;&gt; compliance) and Macroblock Tree ratecontrol (for better quality<br>
&gt;&gt; distribution among frames) require a significant lookahead; both of<br>
&gt;&gt; these features will be disabled if you turn off the lookahead.<br>
&gt;&gt; Obviously, for low-latency applications like videoconferencing, you<br>
&gt;&gt; have no choice.<br>
&gt;&gt;<br>
&gt;&gt; Dark Shikari<br>
&gt;<br>
&gt;<br>
&gt; I have to implement a transcoder that receive a frame by network and<br>
&gt; downsize it for mobile device with low latency. B-adapt is set to 1, and i<br>
&gt; have only one threads, i cannot access to param.rc.lookahead, and I don&#39;t<br>
&gt; know if by default lookahead is disabled or not. If lookahead is disabled i<br>
&gt; think that frame-delay is 1, in this case i think that the problem is not<br>
&gt; caused by frame delay. Any suggest? Thanks.<br>
&gt; Best regards<br>
<br>
</div></div>Of course you can access param.rc.i_lookahead; it&#39;s part of your<br>
x264_param_t.  If you don&#39;t know how to access parameters in a struct,<br>
well, I can&#39;t help teach you to program in C.<br>
<br>
Lookahead is on by default and equal to 40 frames.<br>
<div><div></div><div class="h5"><br>
Dark Shikari<br></div></div></blockquote><div><br>Sorry, i not explain clear, i have this definition of the struct rc:<br>/*This is the rc struct definition contained in the definition of x264_param_t in h264.h*/<br>/* Rate control parameters */<br>
    struct<br>    {<br>        int         i_rc_method;    /* X264_RC_* */<br><br>        int         i_qp_constant;  /* 0-51 */<br>        int         i_qp_min;       /* min allowed QP value */<br>        int         i_qp_max;       /* max allowed QP value */<br>
        int         i_qp_step;      /* max QP step between frames */<br><br>        int         i_bitrate;<br>        float       f_rf_constant;  /* 1pass VBR, nominal QP */<br>        float       f_rate_tolerance;<br>        int         i_vbv_max_bitrate;<br>
        int         i_vbv_buffer_size;<br>        float       f_vbv_buffer_init; /* &lt;=1: fraction of buffer_size. &gt;1: kbit */<br>        float       f_ip_factor;<br>        float       f_pb_factor;<br><br>        int         i_aq_mode;      /* psy adaptive QP. (X264_AQ_*) */<br>
        float       f_aq_strength;<br><br>        /* 2pass */<br>        int         b_stat_write;   /* Enable stat writing in psz_stat_out */<br>        char        *psz_stat_out;<br>        int         b_stat_read;    /* Read stat from psz_stat_in and use it */<br>
        char        *psz_stat_in;<br><br>        /* 2pass params (same as ffmpeg ones) */<br>        float       f_qcompress;    /* 0.0 =&gt; cbr, 1.0 =&gt; constant qp */<br>        float       f_qblur;        /* temporally blur quants */<br>
        float       f_complexity_blur; /* temporally blur complexity */<br>        x264_zone_t *zones;         /* ratecontrol overrides */<br>        int         i_zones;        /* number of zone_t&#39;s */<br>        char        *psz_zones;     /* alternate method of specifying zones */<br>
    } rc;<br><br>The field i_lookahead don&#39;t exists in this declaration, and in my program i cannot reference it, I don&#39;t know if is for reason of different version. It is possible? thanks and sorry for my difficulties on work with x264 but I&#39;m new on the use of this library.<br>
</div></div>