Hello,
 
    Now, I have already called the avcodec_open2 function successfully by 
calling av_dict_set(&opts, "strict", "experimental", 0) firstly. But now I run 
into an other problem again: when I call the avcodec_encode_audio2(c, &pkt, 
frame, &got_output) firstly, it returned 0 and the got_output is 0 too, and 
when I call the avcodec_encode_audio2(c, &pkt, frame, &got_output) secondly, 
it'll incur an address accessing error: read 0xFFFFFFFF. I don't know what I 
have made mistake, and I have no any way now. I'll very appreciate anyone who 
can help me, thanks very much.
 
the program is attached as following, here the srcdata is a pointer array, 
srcdata[1] = srcdata[0] + 4096, and they all have been filled original audio 
data befor the while loop.  I have try to replace the 
avcodec_fill_audio_frame(frame, c->channels, c->sample_fmt, (const 
uint8_t*)pCurSource, m_SrcBuffLen, 0); with frame->data[0] = srcdata[0]; 
frame->data[1] = srcdata[1]; but the problem still exists.
 
note: I used the ffmpeg native AAC encoder, and I have found and opened the 
encoder successfully.
 
=============program==============
  got_output =  0;
  offset = 0;
  while(i<10)
  {
     i++;

     av_init_packet(&pkt);
     pkt.data = NULL;    // packet data will be allocated by the encoder
     pkt.size = 0;

     pCurSource = srcdata[0];

     ret = avcodec_fill_audio_frame(frame, c->channels, c->sample_fmt,
              (const uint8_t*)pCurSource, m_SrcBuffLen, 0);

     /* encode the samples */
     ret = avcodec_encode_audio2(c, &pkt, frame, &got_output);
   
     if (ret >= 0 && pDest != NULL && got_output && pkt.data != NULL && 
pkt.size > 0)
    {
      memcpy(pDest + destLen, pkt.data, pkt.size);
      destLen = destLen + pkt.size;
      av_free_packet(&pkt);
     }
  }
 
------------------
Justin




------------------ Original ------------------
From:  "Justin"<[email protected]>;
Date:  Tue, Apr 9, 2013 05:54 PM
To:  "This list is about using libavcodec, libavformat, libavutil,libavdevice 
and libavfilter."<[email protected]>; 

Subject:  Re: [Libav-user] AAC encoding error



I have done as your way, and pleasantly found that it really worked sucessfully.
 
I very appreciate you, thank you very much again.
 
------------------
Best Regards,
Justin




------------------ Original ------------------
From:  "Andrey Utkin"<[email protected]>;
Date:  Tue, Apr 9, 2013 07:42 AM
To:  "This list is about using libavcodec, libavformat, libavutil,libavdevice 
and libavfilter."<[email protected]>; 

Subject:  Re: [Libav-user] AAC encoding error



2013/4/8 Justin <[email protected]>:
> But, how can I set the additional flag? thank you very much.

This way:

AVDictionary *opts = NULL;
av_dict_set(&opts, "strict", "experimental", 0);
int ret = avcodec_open2(encoder_context, codec, &opts);
av_dict_free(&opts);
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to