비정상적인 P프레임의 디코딩.

muzie의 이미지

UDP로 MPEG4의 P프레임을 가져옵니다.
시퀀스 넘버를 체크해서 I프레임중 패킷손실이 있으면 아예 버려버리고
P프레임 같은 경우엔 패킷손실을 무시하고 그냥 디코더에 던져주는데
segmentation fault가 뜨거나 혹은 디코더쪽에서 무한 에러를 내뱉습니다.
그 이후로 들어가는 프레임은 정상적인 프레임이라고 해도 디코더 자체가 맛이 가는듯 보입니다.

질문은.. 비정상적인 P프레임(공교롭게 Mark가 1일때 패킷 손실이 발생해서 2개나 3개의 프레임이
합쳐진 형태가 굳이 아니더라도.)이 디코더에서 변환될때 시스템 자체에 문제를 줄 가능성이
있는지요?

환경은 임베디드 리눅스, 6410 보드를 사용중이고 삼성에서 제공한 커널을 쓰고 있습니다.

feanor의 이미지

I프레임이 정지화면이고 P프레임이 이전화면과의 차이만 인코딩하는 거 아닌가요? 당연히 문제가 생길 것 같은데요.

muzie의 이미지

네 당연히 문제가 생기겠죠.
제 질문은 그것으로 인해서 시스템이 죽어버릴 가능성도 있냐는 것이었습니다.

6410의 하드웨어 디코더를 사용하는데
메모리 범위를 넘어버려 죽는다면 어느정도 이해가 가는데 input buffer의 크기보다
안크더라도, 그저 잘못된 형식이라면 시스템 자체가 맛이 간다거나 하는것은 조금 말이 안되는 것 같아서요.

문제는 지금 프로그램에서 그런 증상이 (한프레임 크기의 P가 잘못된 경우 시스템이 죽어버리는)
나타나고 있다는 것이죠. 하드웨어 디코더 자체가 맛이 가서 원복이 되질 않습니다.

aruee의 이미지

codec에 따라 다를것 같습니다.

예외적인 상황 또는 input data를 적절히 나눠서 디코딩하는건 코덱 구현에 따라 천차만별일듯하네요.

특히 H/W 디코더의 경우는 h/w control의 sync를 완전히 날려버릴 수 있습니다.
아니면 arm 쪽에서 h/w codec의 응답을 무한히 기다리는 상황일 수도 있구요.

비디오 코덱은 아니지만 mp3코덱은 이것저것 써봤는데,

대충 넣어도 잘되는 녀석이 있는가 하면 정확하게 frame 처움부터 끝까지만 넣어야 동작하는것도 있더군요.

s/w codec쪽으로 가시는게 정답 일 수도 있을듯 합니다. 사이즈가 크다면 난감하시겠지만요...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.