avcodec/dca_parser: simplify state machine

Signed-off-by: James Almer <jamrial@gmail.com>
pull/216/head
foo86 9 years ago committed by James Almer
parent 054a2c9fdf
commit 1f7b67a1ca
  1. 34
      libavcodec/dca_parser.c

@ -109,25 +109,25 @@ static int dca_find_frame_end(DCAParseContext *pc1, const uint8_t *buf,
case DCA_SYNCWORD_CORE_LE: case DCA_SYNCWORD_CORE_LE:
if (size == 2) { if (size == 2) {
pc1->framesize = CORE_FRAMESIZE(STATE_LE(state)); pc1->framesize = CORE_FRAMESIZE(STATE_LE(state));
start_found = 2; start_found = 4;
} }
break; break;
case DCA_SYNCWORD_CORE_14B_BE: case DCA_SYNCWORD_CORE_14B_BE:
if (size == 4) { if (size == 4) {
pc1->framesize = CORE_FRAMESIZE(STATE_14(state)) * 8 / 14 * 2; pc1->framesize = CORE_FRAMESIZE(STATE_14(state)) * 8 / 14 * 2;
start_found = 2; start_found = 4;
} }
break; break;
case DCA_SYNCWORD_CORE_14B_LE: case DCA_SYNCWORD_CORE_14B_LE:
if (size == 4) { if (size == 4) {
pc1->framesize = CORE_FRAMESIZE(STATE_14(STATE_LE(state))) * 8 / 14 * 2; pc1->framesize = CORE_FRAMESIZE(STATE_14(STATE_LE(state))) * 8 / 14 * 2;
start_found = 2; start_found = 4;
} }
break; break;
case DCA_SYNCWORD_SUBSTREAM: case DCA_SYNCWORD_SUBSTREAM:
if (size == 6) { if (size == 6) {
pc1->framesize = EXSS_FRAMESIZE(state); pc1->framesize = EXSS_FRAMESIZE(state);
start_found = 2; start_found = 4;
} }
break; break;
default: default:
@ -136,23 +136,19 @@ static int dca_find_frame_end(DCAParseContext *pc1, const uint8_t *buf,
continue; continue;
} }
if (pc1->lastmarker == DCA_SYNCWORD_CORE_BE) { if (start_found == 2 && IS_EXSS_MARKER(state) &&
if (pc1->framesize > size + 2) pc1->framesize <= size + 2) {
continue; pc1->framesize = size + 2;
start_found = 3;
if (start_found == 2 && IS_EXSS_MARKER(state)) { continue;
pc1->framesize = size + 2; }
start_found = 3;
continue;
}
if (start_found == 3) { if (start_found == 3) {
if (size == pc1->framesize + 4) { if (size == pc1->framesize + 4) {
pc1->framesize += EXSS_FRAMESIZE(state); pc1->framesize += EXSS_FRAMESIZE(state);
start_found = 4; start_found = 4;
}
continue;
} }
continue;
} }
if (pc1->framesize > size) if (pc1->framesize > size)

Loading…
Cancel
Save