<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">Hi</div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">I get the following errors continually for each frame in my code:</div><div class="gmail_default"><div class="gmail_default" style="font-size:small"><font face="monospace, monospace"><br></font></div><div class="gmail_default" style="font-size:small"><font face="monospace, monospace">[h264 @ 0108c8c0] error while decoding MB 71 44, bytestream -27</font></div><div class="gmail_default" style="font-size:small"><font face="monospace, monospace">[h264 @ 0108c8c0] concealing 58 DC, 58 AC, 58 MV errors in I frame</font></div><div class="gmail_default" style="font-size:small"><font face="monospace, monospace">[h264 @ 0108c8c0] error while decoding MB 53 4, bytestream -9</font></div><div class="gmail_default" style="font-size:small"><font face="monospace, monospace">[h264 @ 0108c8c0] concealing 3276 DC, 3276 AC, 3276 MV errors in I frame</font></div><div class="gmail_default" style="font-size:small"><font face="monospace, monospace">[h264 @ 0108c8c0] error while decoding MB 18 4, bytestream -5</font></div><div class="gmail_default" style="font-size:small"><font face="monospace, monospace">[h264 @ 0108c8c0] concealing 3311 DC, 3311 AC, 3311 MV errors in I frame</font></div><div class="gmail_default" style="font-size:small"><font face="monospace, monospace">[h264 @ 0108c8c0] error while decoding MB 22 3, bytestream -6</font></div><div class="gmail_default" style="font-size:small"><font face="monospace, monospace">[h264 @ 0108c8c0] concealing 3387 DC, 3387 AC, 3387 MV errors in I frame</font></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">Now about my code:</div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">I got frames from a Bosch camera in H264 and saved them in a file in a special format. The format doesn't change the frames and just adds some metadata information which is to be used by another parts of a program. Now in my program I extract the original frames and try to decode them. This is my code:</div><div class="gmail_default"><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">static unsafe int sw_play(byte* buf, int pos, int len, Int64 firstTimestamp)</font></div><div class="gmail_default"><font face="monospace, monospace">{</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">    </span>AVCodecID codecId = AVCodecID.AV_CODEC_ID_H264;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">        </span>_pCodec = FFmpegInvoke.avcodec_find_decoder(codecId);</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">  </span>Debug.Assert(_pCodec != null);</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre"> </span>AVCodecContext* _pCodecContext = FFmpegInvoke.avcodec_alloc_context3(_pCodec);</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre"> </span>Debug.Assert(_pCodecContext != null);</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">  </span>Debug.Assert(FFmpegInvoke.avcodec_open2(_pCodecContext, _pCodec, null) == 0);</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">  </span>_pCodecContext->codec_id = codecId;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre"> </span>_pCodecContext->time_base.num = 1;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">  </span>_pCodecContext->time_base.den = 1000;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">       </span>if ((_pCodec->capabilities & FFmpegInvoke.CODEC_CAP_TRUNCATED) != 0)</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">            </span>_pCodecContext->flags |= FFmpegInvoke.CODEC_FLAG_TRUNCATED;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre"> </span>_pCodecContext->width = 1280;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">       </span>_pCodecContext->height = 720;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">       </span>_pCodecContext->pix_fmt = (AVPixelFormat)0;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre"> </span>AVFrame* frame = FFmpegInvoke.av_frame_alloc();</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">        </span>Debug.Assert(frame != null);</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">   </span>RecordFrame* rf;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">       </span>AVPacket packet;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">       </span>FFmpegInvoke.av_init_packet(&packet);</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">      </span>AVFrame* _pDecodedFrame = FFmpegInvoke.av_frame_alloc();</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">       </span>while (true)</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">   </span>{</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">              </span>while (pos != len)</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">             </span>{</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">                      </span>rf = (RecordFrame*)(buf + pos);</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">                        </span>pos += sizeof(RecordFrame);</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">                    </span>Debug.Assert(rf->frameType == (int)FrameType.FRAME_TYPE_STREAM);</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">                    </span>packet.data = buf;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">                     </span>packet.size = rf->frameSize;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">                        </span>Debug.Assert(packet.size > 0);</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">                      </span>packet.flags = rf->flags;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">                   </span>packet.dts = packet.pts = rf->timestamp - firstTimestamp;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">                   </span>packet.stream_index = 0;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">                       </span>int gotPicture = 0;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">                    </span>int size = FFmpegInvoke.avcodec_decode_video2(_pCodecContext, _pDecodedFrame, &gotPicture, &packet);</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">                   </span>Debug.Assert(size == packet.size);</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">                     </span>pos += packet.size;</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">            </span>}</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">              </span>pos = sizeof(RecordFrame) + sizeof(RecordHeader);</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">      </span>}</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">      </span>FFmpegInvoke.av_frame_free(&frame);</font></div><div class="gmail_default"><font face="monospace, monospace">}</font></div><div style="font-family:tahoma,sans-serif;font-size:small"><br></div><div style="font-family:tahoma,sans-serif;font-size:small">What's wrong? The latest version of ffmpeg is used.</div><div style="font-family:tahoma,sans-serif;font-size:small"><br></div></div></div></div></div></div></div></div>