Sven,
I am seeing similar issues. How exactly are you writing your frames?
Do you think you can share your code inside the
if(outsize >0)
{

}

Thanks
Gautam
On Tue, Feb 1, 2011 at 6:15 AM, Max The Quantum <[email protected]> wrote:
> I've tried your config, but uncommented all lines except
> //c->flags2|=CODEC_FLAG2_8X8DCT;
> //c->flags2^=CODEC_FLAG2_8X8DCT;                // flags2=-dct8x8
> and commented out
>  c->crf = 22;
>
> It seems that problem is caused by wrong value of c->keyint_min. What is
> default value for it?
> Try to set it manually to, say, 25 :)
>
> 2011/2/1 Sven Alisch <[email protected]>
>
>> Hello list,
>>
>> I want to (re-) encode some pictures I decoded with libav. The following
>> code shows how I do that:
>>
>> First I decode an h.264 Stream and get pictures in an AVFrame structure.
>> After doing this I want to encode them into an h.264 stream.
>> <snip>
>> bytesDecoded =
>> avcodec_decode_video2(m->videofile->VideoTrack->codec_context, avframe,
>> &frameFinished, &packet);
>>
>> if (frameFinished)
>> {
>>        frameNr++;
>>
>>        if (frameNr >= decodeToFrame)
>>        {
>>                AVCodecContext* c = t->streamContext->codec;
>>                avframe->pts = (frameNr - decodeToFrame)*40*90;
>>                int out_size = avcodec_encode_video(c, video_outbuf,
>> video_outbuf_size, avframe);
>>                if (out_size > 0)
>>                {
>>                        ...
>>                }
>> <snap>
>>
>> My Encoding parameters for x264 are set in a function like this:
>>
>> bool h264_initEncoder(AVFormatContext* fc, tavtrack_t* track)
>> {
>>        AVCodec* codec = NULL;
>>        AVCodecContext* c = NULL;
>>
>>        c = track->streamContext->codec;
>>        c->profile = track->codec_context->profile;     // original set by
>> libavformat/libavcodec
>>        c->level = track->codec_context->level;         // original set by
>> libavformat/libavcodec
>>
>>        // Medium Profile
>>        // libx264-medium.ffpreset preset
>>        c->coder_type = FF_CODER_TYPE_AC;       // coder = 1
>>        c->flags |= CODEC_FLAG_LOOP_FILTER; // flags=+loop
>>        c->me_cmp|= 1;                                          //
>> cmp=+chroma, where CHROMA = 1
>>        c->partitions |=
>> X264_PART_I8X8+X264_PART_I4X4+X264_PART_P8X8+X264_PART_B8X8;
>>
>>    // partitions=+parti8x8+parti4x4+partp8x8+partb8x8
>>        c->me_method=ME_HEX;                            // me_method=hex
>>        c->me_subpel_quality = 7;                       // subq=7
>>        c->me_range = 16;                                       //
>> me_range=16
>>        //c->gop_size = 250;                                    // g=250
>>        //c->keyint_min = 25;                                   //
>> keyint_min=25
>>        c->scenechange_threshold = 40;          // sc_threshold=40
>>        //c->i_quant_factor = 0.71;                     // i_qfactor=0.71
>>        //c->b_frame_strategy = 1;                      // b_strategy=1
>>        c->qcompress = 0.6;                                     // qcomp=0.6
>>        c->qmin = 10;                                           // qmin=10
>>        c->qmax = 51;                                           // qmax=51
>>        c->max_qdiff = 4;                                       // qdiff=4
>>        c->max_b_frames = 3;                            // bf=3
>>        c->refs = 3;                                            // refs=3
>>        //c->directpred = 1;                                    //
>> directpred=1
>>        //c->trellis = 1;                                               //
>> trellis=1
>>        c->flags2 |=
>> CODEC_FLAG2_BPYRAMID+CODEC_FLAG2_MIXED_REFS+CODEC_FLAG2_WPRED+CODEC_FLAG2_8X8DCT+CODEC_FLAG2_FASTPSKIP;
>>
>>    // flags2=+bpyramid+mixed_refs+wpred+dct8x8+fastpskip
>>        c->weighted_p_pred = 2;                         // wpredp=2
>>
>>        // libx264-main.ffpreset preset
>>        //c->flags2|=CODEC_FLAG2_8X8DCT;
>>        //c->flags2^=CODEC_FLAG2_8X8DCT;                // flags2=-dct8x8
>>        c->crf = 22;
>>        codec = avcodec_find_encoder(c->codec_id);
>>        if (!codec)
>>                return false;
>>
>>        if (avcodec_open(c, codec) < 0)
>>                return false;
>>
>>        return true;
>> }
>>
>> The Problem is, that the avcode_encode_video( ... ) works but no frame will
>> be compressed. I get strange errors like this:
>>
>> [libx264 @ 0x101003600] specified frame type (5) at 0 is not compatible
>> with keyframe interval
>> [libx264 @ 0x101003600] specified frame type (5) at 1 is not compatible
>> with keyframe interval
>> [libx264 @ 0x101003600] specified frame type (3) at 2 is not compatible
>> with keyframe interval
>>
>> I get no frame. But why? Does anybody has an hint for me? Are my parameters
>> wrong?
>>
>> regards,
>> Sven
>> _______________________________________________
>> libav-user mailing list
>> [email protected]
>> https://lists.mplayerhq.hu/mailman/listinfo/libav-user
>>
> _______________________________________________
> libav-user mailing list
> [email protected]
> https://lists.mplayerhq.hu/mailman/listinfo/libav-user
>



-- 
Gautam Muralidhar
Code Particle Inc.
(805)-501-0700
_______________________________________________
libav-user mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/libav-user

Reply via email to