I found it here: https://ffmpeg.org/pipermail/libav-user/2014-August/author.html Sorry for flooding
2014-08-01 6:13 GMT+04:00 Dmitry Adjiev <[email protected]>: > How can I get link to this iscussion for snding to others? > > > 2014-08-01 5:11 GMT+04:00 Dmitry Adjiev <[email protected]>: > > I solved the issue. I don't know why. but in C++ buffer size outbuf_size = >> 100000; was too small, so increase of buffer size solves the problem. >> Thanks for everyone who read it >> >> >> 2014-08-01 5:08 GMT+04:00 Dmitry Adjiev <[email protected]>: >> >> if (open_url(argv[1], &stream) == 0) { >>> >>> AVFrame* pic = av_frame_alloc(); >>> int i, size, x, y, outbuf_size; >>> uint8_t *outbuf, *picture_buf; >>> >>> // alloc image and output buffer >>> outbuf_size = 100000; >>> outbuf = malloc(outbuf_size); >>> size = VIDEO_WIDTH * VIDEO_HEIGHT; >>> picture_buf = malloc((size * 3) / 2); // size for YUV 420 >>> >>> pic->data[0] = picture_buf; >>> pic->data[1] = pic->data[0] + size; >>> pic->data[2] = pic->data[1] + size / 4; >>> pic->linesize[0] = VIDEO_WIDTH; >>> pic->linesize[1] = VIDEO_WIDTH / 2; >>> pic->linesize[2] = VIDEO_WIDTH / 2; >>> AVPacket packet; >>> av_init_packet(&packet); >>> i = 0; >>> >>> int ret = avformat_write_header(stream.output_format_context, >>> NULL); >>> >>> if (ret < 0) { >>> av_log(NULL, AV_LOG_ERROR, "Error occurred when opening >>> output file\n"); >>> return ret; >>> } >>> >>> while (!stopped) { >>> // encode 1 second of video >>> for(i = 0; i < 25; i++) { >>> // prepare a dummy image >>> // >>> for(y = 0; y < VIDEO_HEIGHT; y++) { >>> >>> for(x = 0; x < VIDEO_WIDTH; x++) { >>> pic->data[0][y * pic->linesize[0] + x] = x + y + >>> i * 3; >>> } >>> } >>> >>> // Cb and Cr >>> for(y=0;y<VIDEO_HEIGHT/2;y++) { >>> for(x=0;x<VIDEO_WIDTH/2;x++) { >>> pic->data[1][y * pic->linesize[1] + x] = 128 + y >>> + i * 2; >>> pic->data[2][y * pic->linesize[2] + x] = 64 + x >>> + i * 5; >>> } >>> } >>> >>> int got_packet_ptr; >>> avcodec_encode_video2(stream.stream->codec, &packet, >>> pic, &got_packet_ptr); >>> int stream_index = 0; >>> // prepare packet for muxing >>> packet.stream_index = stream_index; >>> packet.dts = av_rescale_q_rnd(packet.dts, >>> >>> stream.output_format_context->streams[stream_index]->codec->time_base, >>> >>> stream.output_format_context->streams[stream_index]->time_base, >>> AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX); >>> packet.pts = av_rescale_q_rnd(packet.pts, >>> >>> stream.output_format_context->streams[stream_index]->codec->time_base, >>> >>> stream.output_format_context->streams[stream_index]->time_base, >>> AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX); >>> packet.duration = av_rescale_q(packet.duration, >>> >>> stream.output_format_context->streams[stream_index]->codec->time_base, >>> >>> stream.output_format_context->streams[stream_index]->time_base); >>> >>> if (got_packet_ptr) { >>> >>> av_interleaved_write_frame(stream.output_format_context, &packet); >>> } else >>> break; >>> >>> usleep(2); >>> } >>> } >>> >>> >>> 2014-08-01 5:01 GMT+04:00 Dmitry Adjiev <[email protected]>: >>> >>> Hello. >>>> I have a problem with avcodec_encode_video2. >>>> I send h263 video stream to network, this code works when I compile it >>>> with C, but when I try to use C++ classes it crashes. >>>> Can anyone help me? >>>> -- >>>> Regards, >>>> Dmitry >>>> >>> >>> >>> >>> -- >>> Regards, >>> Dmitry >>> >> >> >> >> -- >> Regards, >> Dmitry >> > > > > -- > Regards, > Dmitry > -- Regards, Dmitry
_______________________________________________ Libav-user mailing list [email protected] http://ffmpeg.org/mailman/listinfo/libav-user
