기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

static int audio_decode_frame(VideoState *is, uint8_t *audio_buf, double *pts_ptr)
{
    AVPacket *pkt = &is->audio_pkt;
    int n, len1, data_size;
    double pts;

    for(;;) {
        /* NOTE: the audio packet can contain several frames */
        while (is->audio_pkt_size > 0) {
            len1 = avcodec_decode_audio(&is->audio_st->codec,
                                        (int16_t *)audio_buf, &data_size,
                                        is->audio_pkt_data, is->audio_pkt_size);

                        //is->audio_pkt_data는 오디오 데이터 포인터, is->audio_pkt_size는 데이터 사이즈
                        //417byte,
                        //... 이하생략//
}


--------------------------------------------------------------------
ffplay에서 디코드할 오디오 데이터를 libmad의  int mad_frame_decode(struct mad_frame *frame, struct mad_stream *stream)
로 보내는데 안되네요. 128kbs 일때 417byte씩 보내요.
그 전에 처리해야할 것은 다 했구요.[init()] 이래저래 하는데도 안되네요.(mplayer 에서 ad_libmad.c 에서 참고 해서 했어요.

이 방법이 아닌지...
어파치 한 프레임씩 decode 한다고는 하는데...
안되네요.
mad에서  어느 길이 이상이 필요 한지.
한 프레임씩 보내면 (417byte..)
int mad_header_decode(struct mad_header *header, struct mad_stream *stream){
//..생략..
//여기서 문제 생기네요. 삭제해도 문제 생기고요...
/* verify there is enough data left in buffer to decode this frame */
  if (N + MAD_BUFFER_GUARD > end - stream->this_frame) {
    stream->next_frame = stream->this_frame;

    stream->error = MAD_ERROR_BUFLEN;
    goto fail;
  }
//..생략..
}


그리고 제가요... 군대에 있는데 안그래도 병이라서 한번 질문 하려면 한달 넘게 기다려야 하거든요.. ㅜㅜ 공부하기 힘드네요.

그리고 또 궁금한건데.. next frame 의미는 뭔가요?
다음 프레임이긴 한데.. 왜 next frame 필요한지...

mpeg에 대한 이해가 있어야 하는데 부족하니 잘 모르겠네요.

mplayer 같은경우는 4096씩 가지고 mad로 보내대요.
그리고 417byte가 decode 되면 4096 - 417 만큼 줄어들어서 다시
demux가 417만큼 채우고 이런 식이던데...

그리고 madplay는 0부터 끝까지 포인터를 보내서 순서대로 디코드 하던데...
생각같아서는 ffplay에서 나오는 audio data mad로 보내면 될 것 같은데.
안되네요.

제가 분석한게 맞나요?
ffplay,libmad분석하면서 공부는 많이 되네요.


지금 한달넘게 분석하고 계속 시도 했는데 안되네요. 안그래도 하루에 몇시간 컴터 못 하거든요...

그리고 지금 이걸 계속 해야하는지 말아야 하는지 고민이 들기 시작했어요.
차라리 mplayer를 사용해야 할지.
ffplay를 분석하기 시작하는 이유가 소스가 그나마 간단하긴 한데..
오디오에서 끈겨서 mad만 붙이면 괜찮겠다 생각했어요. 그리고 sdl 사용해서
계속 뭔가를 붙어봐야 겠다는 생각을 했는데....
이거 계속 해야 하나요?
mad 붙이려고 시작해서~ 공부는 많이 되었는데 붙이이도 못하고.....
뭔가 잘 못 된거 같긴 한데...

제가 작업하던거 가지고 와서 올리고 싶은데
군대 아시자나요?
갠히 걸리면 저 영창가서.... 이렇게라도 올려봅니다.

혹시 작업하시분 계시면 도움 바랍니다.
군대에서 공부하는데 쉬운게 아니네요.
인터넷 한번 하려면 한달기다려 외출나와야 하고... ㅜㅜ

pmp에서는 보통 mplayer 쓰나요?

암튼 외출나와서 글 한번 남겨 봅니다.


고현철

2006.05.15 02:47:30
*.190.41.69

libmad쪽 decode루틴으로 데이터를 복사해서 보내주지 않나요?

제가 알기론 중간에 버퍼를 하나 둬서, 그 부분에 demux쪽 데이터를
복사해서 건네주는 걸로 알고 있습니다.

ffplay는 원래 버퍼를 직접 건네주는 걸로 알고 있고요(ptr로)
물론, 자세하게 본 부분은 아니라...(넘 오래되서 기억도 가물...)

해서, 버퍼를 하나 만들고, ffplay의 pkt의 데이터 부분으로부터
libmad가 원하는 만큼 건네주면 될 듯....

오용석

2006.10.07 21:06:49
*.82.97.213

조만간 소스를 올리겠습니다.

아직 전역 3개월 남았습니다..ㅜㅜ
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
6308 현철님의 Root Filesystem 질문이요~ <= 완료 [8] 안정섭 2006-05-10 1415
6307 아직도 비디오 디코딩으로 해매고 있습니다. <--완료 [2] 박영학 2006-05-10 1154
6306 SD Card속도 문제 [5] 정창환 2006-05-10 1799
6305 [질문] Nand Flash 128MB에 관련해서. [3] 이재훈 2006-05-11 1165
6304 H.264의 CAVLC 구현방법에 대한 자료를 구합니다. [1] 장석원 2006-05-14 1243
» ffplay에 libmad 붙이기 방법 또 질문[완료] [2] 오용석 2006-05-14 1346
6302 SD 카드 인식 문제.[미해결] [3] 오용석 2006-05-15 1158
6301 이솝보드 u-boot의 cs8900과 관련한 port 세팅에 관한 질문..--> ... [7] 임동관 2006-05-15 1444
6300 커널 소스에 있는 드라이버에 대해서...<--완료 [1] 박현진 2006-05-16 5189
6299 Qtopia 2.1.1 ARM용으로 컴파일시 에러...ㅡ.ㅡ; <--[완료] [5] 이용휴 2006-05-18 1188
6298 올리신 Toolchain 으로 busybox 가 컴파일이 안돼네요. [5] 임현 2006-05-18 1200
6297 ffplay sync 문제[미해결] [1] 오용석 2006-05-20 1087
6296 QT문서 정리하면서 테스트하고있는데 또 안되는..ㅡ.ㅡ;이에러 좀 봐... [4] 이용휴 2006-05-23 1194
6295 보드를 서버로 돌리려면..?<==ㄹ완료 [6] 윤현승 2006-05-25 1189
6294 커널컴파일중 오류입니다. -> 완료 [6] 서연석 2006-05-25 1052
6293 nand 제어부에 있는 NCON 핀 질문. < 완료. 한지훈 2006-05-26 1347
6292 [re] nand 제어부에 있는 NCON 핀 질문. [1] 고현철 2006-05-26 1409
6291 2440이 PLL을 세팅 못하고 죽어버리네요.. <<== 완료 [2] 양재석 2006-05-26 1050
6290 무선랜 올리신적 있지 않은가염..? <==완료 [1] 윤현승 2006-05-27 1046
6289 노트북에 사용할 USB to Parallel 포트 추천요 [2] 조준동 2006-05-27 1259

사용자 로그인