Michael Niedermayer wrote: >Hi > >On Sun, Jan 21, 2007 at 05:39:32PM +0100, Benjamin Larsson wrote: > > >>Hi, thanks for the review. >> >>The plan is to get a working encoder commited and then later add 2 pass >>and optimizations. >> >> >> >> > >[...] > > >>>[...] >>> >>> >>> >>> >>>>+ ptr[0] = 0; >>>>+ ptr[1] = 0; >>>>+ buf_pos +=2; >>>> >>>> >>>> >>>> >>>please use bytestream.h >>> >>> >>> >>> >>Do you mean bytestream_put_be16(ptr,0) ? >> >> > >yes exactly > > > > >>> >>> >>> >>> >>>>+ } >>>>+ } >>>>+ } >>>>+ >>>>+ if (pred_blocks) >>>>+ *I_frame = 0; >>>>+ else >>>>+ *I_frame = 1; >>>> >>>> >>>> >>>> >>>actually you dont need to keep track of pred_blocks, a simple check for the >>>buf_size vs. the number of blocks*2 should do i think >>> >>> >>> >>> >>I prefer it this way as I could extend the I frame decision then. Think >>of a frame that all but one block changes. Then it might be of advantage >>to encode it as an I frame. The format only allow block changes at I >>frames. >> >> > >ok > >[...] > > > >[...] > > >>+static int flashsv_encode_init(AVCodecContext *avctx) >>+{ >>+ FlashSVContext *s = (FlashSVContext *)avctx->priv_data; >>+ >>+ s->avctx = avctx; >>+ >>+ if ((avctx->width > 4095) || (avctx->height > 4095)) { >>+ av_log(avctx, AV_LOG_ERROR, "Input dimensions to large, input must be max 4096x4096 !\n"); >>+ return -1; >>+ } >>+ >>+ if (avcodec_check_dimensions(avctx, avctx->width, avctx->height) < 0) { >>+ return -1; >>+ } >>+ >>+ s->first_frame = 1; >>+ >>+ // Needed if zlib unused or init aborted before deflateInit >>+ memset(&(s->zstream), 0, sizeof(z_stream)); >>+/* >>+ s->zstream.zalloc = NULL; //av_malloc; >>+ s->zstream.zfree = NULL; //av_free; >>+ s->zstream.opaque = NULL; >>+ zret = deflateInit(&(s->zstream), 9); >>+ if (zret != Z_OK) { >>+ av_log(avctx, AV_LOG_ERROR, "Inflate init error: %d\n", zret); >>+ return -1; >>+ } >>+*/ >>+ >>+ s->image_width = avctx->width; >>+ s->image_height = avctx->height; >>+ >>+ if ((s->tmpblock = av_mallocz(3*256*256)) == NULL) { >>+ av_log(avctx, AV_LOG_ERROR, "Can't allocate compression buffer.\n"); >>+ return -1; >>+ } >>+ >>+ if (!s->encbuffer) >>+ s->encbuffer = av_mallocz(s->image_width*s->image_height*3); >> >> > >how can the buffer be already allocated? and if so how can we be sure its >old size is large enough? > > Fixed. > > > >>+ >>+ >>+ return 0; >>+} >>+ >>+#ifdef CONFIG_ENCODERS >> >> > >the 2 functions above are also encoder specific i think and it would be nice >if the encoder and decoder would be in seperate files, would avoid all the >CONFIG_EN/DECODERS > >[...] > > > Fixed. And new patch attached. MvH Benjamin Larsson -- new tiny signature -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: flashsv3.patch URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20070121/69879c9d/attachment.asc>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4