Browse code

build: move tests/seek_test.c to libavformat and reuse generic build rules

Diego Biurrun authored on 2011/07/13 09:09:19
Showing 6 changed files
... ...
@@ -30,7 +30,6 @@ tests/audiogen
30 30
 tests/base64
31 31
 tests/data
32 32
 tests/rotozoom
33
-tests/seek_test
34 33
 tests/tiny_psnr
35 34
 tests/videogen
36 35
 tests/vsynth1
... ...
@@ -334,7 +334,7 @@ OBJS-$(CONFIG_UDP_PROTOCOL)              += udp.o
334 334
 OBJS-$(CONFIG_JACK_INDEV)                += timefilter.o
335 335
 
336 336
 EXAMPLES  = metadata output
337
-TESTPROGS = timefilter
337
+TESTPROGS = seek timefilter
338 338
 TOOLS     = pktdumper probetest
339 339
 
340 340
 include $(SRC_PATH)/subdir.mak
341 341
new file mode 100644
... ...
@@ -0,0 +1,133 @@
0
+/*
1
+ * Copyright (c) 2003 Fabrice Bellard
2
+ * Copyright (c) 2007 Michael Niedermayer
3
+ *
4
+ * This file is part of Libav.
5
+ *
6
+ * Libav is free software; you can redistribute it and/or
7
+ * modify it under the terms of the GNU Lesser General Public
8
+ * License as published by the Free Software Foundation; either
9
+ * version 2.1 of the License, or (at your option) any later version.
10
+ *
11
+ * Libav is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
+ * Lesser General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU Lesser General Public
17
+ * License along with Libav; if not, write to the Free Software
18
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
+ */
20
+
21
+#include <stdint.h>
22
+#include <stdlib.h>
23
+#include <stdio.h>
24
+#include <string.h>
25
+
26
+#include "libavutil/common.h"
27
+#include "libavutil/mathematics.h"
28
+#include "libavformat/avformat.h"
29
+
30
+#undef exit
31
+#undef printf
32
+#undef fprintf
33
+
34
+static char buffer[20];
35
+
36
+static const char *ret_str(int v)
37
+{
38
+    switch (v) {
39
+    case AVERROR_EOF:     return "-EOF";
40
+    case AVERROR(EIO):    return "-EIO";
41
+    case AVERROR(ENOMEM): return "-ENOMEM";
42
+    case AVERROR(EINVAL): return "-EINVAL";
43
+    default:
44
+        snprintf(buffer, sizeof(buffer), "%2d", v);
45
+        return buffer;
46
+    }
47
+}
48
+
49
+static void ts_str(char buffer[60], int64_t ts, AVRational base)
50
+{
51
+    double tsval;
52
+    if (ts == AV_NOPTS_VALUE) {
53
+        strcpy(buffer, " NOPTS   ");
54
+        return;
55
+    }
56
+    tsval = ts * av_q2d(base);
57
+    snprintf(buffer, 60, "%9f", tsval);
58
+}
59
+
60
+int main(int argc, char **argv)
61
+{
62
+    const char *filename;
63
+    AVFormatContext *ic = NULL;
64
+    int i, ret, stream_id;
65
+    int64_t timestamp;
66
+    AVFormatParameters params, *ap= &params;
67
+    memset(ap, 0, sizeof(params));
68
+    ap->channels=1;
69
+    ap->sample_rate= 22050;
70
+
71
+    /* initialize libavcodec, and register all codecs and formats */
72
+    av_register_all();
73
+
74
+    if (argc != 2) {
75
+        printf("usage: %s input_file\n"
76
+               "\n", argv[0]);
77
+        exit(1);
78
+    }
79
+
80
+    filename = argv[1];
81
+
82
+    ret = av_open_input_file(&ic, filename, NULL, 0, ap);
83
+    if (ret < 0) {
84
+        fprintf(stderr, "cannot open %s\n", filename);
85
+        exit(1);
86
+    }
87
+
88
+    ret = av_find_stream_info(ic);
89
+    if (ret < 0) {
90
+        fprintf(stderr, "%s: could not find codec parameters\n", filename);
91
+        exit(1);
92
+    }
93
+
94
+    for(i=0; ; i++){
95
+        AVPacket pkt;
96
+        AVStream *av_uninit(st);
97
+        char ts_buf[60];
98
+
99
+        memset(&pkt, 0, sizeof(pkt));
100
+        if(ret>=0){
101
+            ret= av_read_frame(ic, &pkt);
102
+            if(ret>=0){
103
+                char dts_buf[60];
104
+                st= ic->streams[pkt.stream_index];
105
+                ts_str(dts_buf, pkt.dts, st->time_base);
106
+                ts_str(ts_buf,  pkt.pts, st->time_base);
107
+                printf("ret:%-10s st:%2d flags:%d dts:%s pts:%s pos:%7" PRId64 " size:%6d", ret_str(ret), pkt.stream_index, pkt.flags, dts_buf, ts_buf, pkt.pos, pkt.size);
108
+                av_free_packet(&pkt);
109
+            } else
110
+                printf("ret:%s", ret_str(ret)); // necessary to avoid trailing whitespace
111
+            printf("\n");
112
+        }
113
+
114
+        if(i>25) break;
115
+
116
+        stream_id= (i>>1)%(ic->nb_streams+1) - 1;
117
+        timestamp= (i*19362894167LL) % (4*AV_TIME_BASE) - AV_TIME_BASE;
118
+        if(stream_id>=0){
119
+            st= ic->streams[stream_id];
120
+            timestamp= av_rescale_q(timestamp, AV_TIME_BASE_Q, st->time_base);
121
+        }
122
+        //FIXME fully test the new seek API
123
+        if(i&1) ret = avformat_seek_file(ic, stream_id, INT64_MIN, timestamp, timestamp, 0);
124
+        else    ret = avformat_seek_file(ic, stream_id, timestamp, timestamp, INT64_MAX, 0);
125
+        ts_str(ts_buf, timestamp, stream_id < 0 ? AV_TIME_BASE_Q : st->time_base);
126
+        printf("ret:%-10s st:%2d flags:%d  ts:%s\n", ret_str(ret), stream_id, i&1, ts_buf);
127
+    }
128
+
129
+    av_close_input_file(ic);
130
+
131
+    return 0;
132
+}
... ...
@@ -28,9 +28,6 @@ tests/data/asynth1.sw: tests/audiogen$(HOSTEXESUF)
28 28
 
29 29
 tests/data/asynth1.sw tests/vsynth%/00.pgm: TAG = GEN
30 30
 
31
-tests/seek_test$(EXESUF): tests/seek_test.o $(FF_DEP_LIBS)
32
-	$(LD) $(LDFLAGS) -o $@ $< $(FF_EXTRALIBS)
33
-
34 31
 include $(SRC_PATH)/tests/fate.mak
35 32
 include $(SRC_PATH)/tests/fate2.mak
36 33
 
... ...
@@ -64,7 +61,7 @@ $(filter-out %-aref,$(FATE_ACODEC)): $(AREF)
64 64
 $(filter-out %-vref,$(FATE_VCODEC)): $(VREF)
65 65
 $(FATE_LAVF):   $(REFS)
66 66
 $(FATE_LAVFI):  $(REFS) tools/lavfi-showfiltfmts$(EXESUF)
67
-$(FATE_SEEK):   fate-codec fate-lavf tests/seek_test$(EXESUF)
67
+$(FATE_SEEK):   fate-codec fate-lavf libavformat/seek-test$(EXESUF)
68 68
 
69 69
 $(FATE_ACODEC):  CMD = codectest acodec
70 70
 $(FATE_VSYNTH1): CMD = codectest vsynth1
... ...
@@ -107,7 +104,6 @@ clean:: testclean
107 107
 testclean:
108 108
 	$(RM) -r tests/vsynth1 tests/vsynth2 tests/data
109 109
 	$(RM) $(CLEANSUFFIXES:%=tests/%)
110
-	$(RM) tests/seek_test$(EXESUF) tests/seek_test.o
111 110
 	$(RM) $(TESTTOOLS:%=tests/%$(HOSTEXESUF))
112 111
 
113 112
 -include $(wildcard tests/*.d)
... ...
@@ -104,7 +104,7 @@ seektest(){
104 104
                  file=$(echo tests/data/$d/$file)
105 105
                  ;;
106 106
     esac
107
-    $target_exec $target_path/tests/seek_test $target_path/$file
107
+    $target_exec $target_path/libavformat/seek-test $target_path/$file
108 108
 }
109 109
 
110 110
 mkdir -p "$outdir"
111 111
deleted file mode 100644
... ...
@@ -1,133 +0,0 @@
1
-/*
2
- * Copyright (c) 2003 Fabrice Bellard
3
- * Copyright (c) 2007 Michael Niedermayer
4
- *
5
- * This file is part of Libav.
6
- *
7
- * Libav is free software; you can redistribute it and/or
8
- * modify it under the terms of the GNU Lesser General Public
9
- * License as published by the Free Software Foundation; either
10
- * version 2.1 of the License, or (at your option) any later version.
11
- *
12
- * Libav is distributed in the hope that it will be useful,
13
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
- * Lesser General Public License for more details.
16
- *
17
- * You should have received a copy of the GNU Lesser General Public
18
- * License along with Libav; if not, write to the Free Software
19
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
- */
21
-
22
-#include <stdint.h>
23
-#include <stdlib.h>
24
-#include <stdio.h>
25
-#include <string.h>
26
-
27
-#include "libavutil/common.h"
28
-#include "libavutil/mathematics.h"
29
-#include "libavformat/avformat.h"
30
-
31
-#undef exit
32
-#undef printf
33
-#undef fprintf
34
-
35
-static char buffer[20];
36
-
37
-static const char *ret_str(int v)
38
-{
39
-    switch (v) {
40
-    case AVERROR_EOF:     return "-EOF";
41
-    case AVERROR(EIO):    return "-EIO";
42
-    case AVERROR(ENOMEM): return "-ENOMEM";
43
-    case AVERROR(EINVAL): return "-EINVAL";
44
-    default:
45
-        snprintf(buffer, sizeof(buffer), "%2d", v);
46
-        return buffer;
47
-    }
48
-}
49
-
50
-static void ts_str(char buffer[60], int64_t ts, AVRational base)
51
-{
52
-    double tsval;
53
-    if (ts == AV_NOPTS_VALUE) {
54
-        strcpy(buffer, " NOPTS   ");
55
-        return;
56
-    }
57
-    tsval = ts * av_q2d(base);
58
-    snprintf(buffer, 60, "%9f", tsval);
59
-}
60
-
61
-int main(int argc, char **argv)
62
-{
63
-    const char *filename;
64
-    AVFormatContext *ic = NULL;
65
-    int i, ret, stream_id;
66
-    int64_t timestamp;
67
-    AVFormatParameters params, *ap= &params;
68
-    memset(ap, 0, sizeof(params));
69
-    ap->channels=1;
70
-    ap->sample_rate= 22050;
71
-
72
-    /* initialize libavcodec, and register all codecs and formats */
73
-    av_register_all();
74
-
75
-    if (argc != 2) {
76
-        printf("usage: %s input_file\n"
77
-               "\n", argv[0]);
78
-        exit(1);
79
-    }
80
-
81
-    filename = argv[1];
82
-
83
-    ret = av_open_input_file(&ic, filename, NULL, 0, ap);
84
-    if (ret < 0) {
85
-        fprintf(stderr, "cannot open %s\n", filename);
86
-        exit(1);
87
-    }
88
-
89
-    ret = av_find_stream_info(ic);
90
-    if (ret < 0) {
91
-        fprintf(stderr, "%s: could not find codec parameters\n", filename);
92
-        exit(1);
93
-    }
94
-
95
-    for(i=0; ; i++){
96
-        AVPacket pkt;
97
-        AVStream *av_uninit(st);
98
-        char ts_buf[60];
99
-
100
-        memset(&pkt, 0, sizeof(pkt));
101
-        if(ret>=0){
102
-            ret= av_read_frame(ic, &pkt);
103
-            if(ret>=0){
104
-                char dts_buf[60];
105
-                st= ic->streams[pkt.stream_index];
106
-                ts_str(dts_buf, pkt.dts, st->time_base);
107
-                ts_str(ts_buf,  pkt.pts, st->time_base);
108
-                printf("ret:%-10s st:%2d flags:%d dts:%s pts:%s pos:%7" PRId64 " size:%6d", ret_str(ret), pkt.stream_index, pkt.flags, dts_buf, ts_buf, pkt.pos, pkt.size);
109
-                av_free_packet(&pkt);
110
-            } else
111
-                printf("ret:%s", ret_str(ret)); // necessary to avoid trailing whitespace
112
-            printf("\n");
113
-        }
114
-
115
-        if(i>25) break;
116
-
117
-        stream_id= (i>>1)%(ic->nb_streams+1) - 1;
118
-        timestamp= (i*19362894167LL) % (4*AV_TIME_BASE) - AV_TIME_BASE;
119
-        if(stream_id>=0){
120
-            st= ic->streams[stream_id];
121
-            timestamp= av_rescale_q(timestamp, AV_TIME_BASE_Q, st->time_base);
122
-        }
123
-        //FIXME fully test the new seek API
124
-        if(i&1) ret = avformat_seek_file(ic, stream_id, INT64_MIN, timestamp, timestamp, 0);
125
-        else    ret = avformat_seek_file(ic, stream_id, timestamp, timestamp, INT64_MAX, 0);
126
-        ts_str(ts_buf, timestamp, stream_id < 0 ? AV_TIME_BASE_Q : st->time_base);
127
-        printf("ret:%-10s st:%2d flags:%d  ts:%s\n", ret_str(ret), stream_id, i&1, ts_buf);
128
-    }
129
-
130
-    av_close_input_file(ic);
131
-
132
-    return 0;
133
-}