diff options
Diffstat (limited to 'src/plugins/mpeg_extractor.c')
-rw-r--r-- | src/plugins/mpeg_extractor.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/plugins/mpeg_extractor.c b/src/plugins/mpeg_extractor.c index dfc7ecb..7e97487 100644 --- a/src/plugins/mpeg_extractor.c +++ b/src/plugins/mpeg_extractor.c | |||
@@ -52,7 +52,8 @@ EXTRACTOR_mpeg_extract_method (struct EXTRACTOR_ExtractContext *ec) | |||
52 | ssize_t avail; | 52 | ssize_t avail; |
53 | mpeg2_state_t state; | 53 | mpeg2_state_t state; |
54 | char format[256]; | 54 | char format[256]; |
55 | int finished; | 55 | char gop_format[256]; |
56 | int have_gop; | ||
56 | 57 | ||
57 | if (NULL == (handle = mpeg2_init ())) | 58 | if (NULL == (handle = mpeg2_init ())) |
58 | return; | 59 | return; |
@@ -61,8 +62,8 @@ EXTRACTOR_mpeg_extract_method (struct EXTRACTOR_ExtractContext *ec) | |||
61 | mpeg2_close (handle); | 62 | mpeg2_close (handle); |
62 | return; | 63 | return; |
63 | } | 64 | } |
64 | finished = 3; | 65 | have_gop = 0; |
65 | while (0 != finished) | 66 | while (1) |
66 | { | 67 | { |
67 | state = mpeg2_parse (handle); | 68 | state = mpeg2_parse (handle); |
68 | switch (state) | 69 | switch (state) |
@@ -101,19 +102,16 @@ EXTRACTOR_mpeg_extract_method (struct EXTRACTOR_ExtractContext *ec) | |||
101 | ADD ("MPEG2", EXTRACTOR_METATYPE_FORMAT_VERSION); | 102 | ADD ("MPEG2", EXTRACTOR_METATYPE_FORMAT_VERSION); |
102 | else | 103 | else |
103 | ADD ("MPEG1", EXTRACTOR_METATYPE_FORMAT_VERSION); | 104 | ADD ("MPEG1", EXTRACTOR_METATYPE_FORMAT_VERSION); |
104 | finished &= ~2; | ||
105 | break; | 105 | break; |
106 | case STATE_GOP: | 106 | case STATE_GOP: |
107 | if ( (NULL != info->gop) && | 107 | if (NULL != info->gop) |
108 | (0 != info->gop->pictures) ) | ||
109 | { | 108 | { |
110 | snprintf (format, | 109 | snprintf (gop_format, |
111 | sizeof(format), | 110 | sizeof (gop_format), |
112 | "%u:%u:%u (%u frames)", | 111 | "%02u:%02u:%02u (%u frames)", |
113 | info->gop->hours, | 112 | info->gop->hours, info->gop->minutes, info->gop->seconds, |
114 | info->gop->minutes, info->gop->seconds, info->gop->pictures); | 113 | info->gop->pictures); |
115 | ADD (format, EXTRACTOR_METATYPE_DURATION); | 114 | have_gop = 1; |
116 | finished &= ~1; | ||
117 | } | 115 | } |
118 | break; | 116 | break; |
119 | case STATE_SLICE: | 117 | case STATE_SLICE: |
@@ -127,6 +125,8 @@ EXTRACTOR_mpeg_extract_method (struct EXTRACTOR_ExtractContext *ec) | |||
127 | } | 125 | } |
128 | } | 126 | } |
129 | EXIT: | 127 | EXIT: |
128 | if (1 == have_gop) | ||
129 | ADD (gop_format, EXTRACTOR_METATYPE_DURATION); | ||
130 | mpeg2_close (handle); | 130 | mpeg2_close (handle); |
131 | } | 131 | } |
132 | 132 | ||