ffmpegのチュートリアルをよみはじめた

http://www.dranger.com/ffmpeg/ffmpeg.html

1つ目のソースtutorial01.cが最近のffmpegだと既に通らなかった。調べたところimg_convertが無くなってsws_scale使えとのことらしい。
http://ffmpeg.arrozcru.com/forum/viewtopic.php?f=1&t=319

tutorial01.cを変えたところ。

      // Did we get a video frame?
      if(frameFinished) {
        /*
        // Convert the image from its native format to RGB
        img_convert((AVPicture *)pFrameRGB, PIX_FMT_RGB24, 
            (AVPicture*)pFrame, pCodecCtx->pix_fmt, pCodecCtx->width, 
            pCodecCtx->height);
            */

        //Initialize Context
        struct SwsContext *pSWSCtx = sws_getContext(
            pCodecCtx->width, pCodecCtx->height
            , pCodecCtx->pix_fmt
            , pCodecCtx->width, pCodecCtx->height
            , PIX_FMT_RGB24, SWS_BICUBIC, NULL, NULL, NULL);

        //Convert YUV->RGB
        sws_scale(pSWSCtx, pFrame->data
            , pFrame->linesize, 0 , pCodecCtx->height
            , pFrameRGB->data, pFrameRGB->linesize);

        //Release
        sws_freeContext(pSWSCtx);

        // Save the frame to disk
        if(++i<=5)
          SaveFrame(pFrameRGB, pCodecCtx->width, pCodecCtx->height,
              i);
      }

SwsContextをstruct SwsContextと書かないといけないことに気付かず1時間以上頓挫。

sws_scaleについてふれている記事を発見。
http://d.hatena.ne.jp/iitaku/20080528
チュートリアルの後半でも解説があるらしい。

OBJS1= tutorial01.o
      
CC=gcc
CXX=g++
LINK=$(CXX)
  
CFLAGS=-I/usr/include/ffmpeg -I/usr/include/libavcodec -I/usr/include/libavformat -I/usr/include/libswscale
CXXFLAGS=$(CFLAGS)
LDFLAGS=-lavcodec -lavformat -lswscale
      
all: tut1 
      
tut1: $(OBJS1)
._$(LINK) -o $@ $^ $(LDFLAGS)
      
.cpp.o:
._$(CXX) -o $@ -c $(CXXFLAGS) $<

.c.o:
._$(CC) -o $@ -c $(CFLAGS) $<

clean:
._rm -f $(OBJS1) $(TARGET)

平行してMinGW版のビルドもやってみよう。
http://www.up-cat.net/MinGW%25A1%25DCffmpeg%25A5%25A4%25A5%25F3%25A5%25C7%25A5%25C3%25A5%25AF%25A5%25B9.html