1 | !include once #1025007 // JCodec |
2 | |
3 | static int framesFromVideo_bufferSize = 7; |
4 | static bool framesFromVideo_verbose; |
5 | |
6 | static IterableIterator<BufferedImage> framesFromVideo_reordering(File video) ctex {
|
7 | final int bufferSize = framesFromVideo_bufferSize; |
8 | final bool verbose = framesFromVideo_verbose; |
9 | final FileChannelWrapper ch = NIOUtils.readableChannel(video); |
10 | final AWTFrameGrab8Bit grab = AWTFrameGrab8Bit.createAWTFrameGrab8Bit(ch); |
11 | |
12 | ret iteratorFromFunction(new O {
|
13 | new TreeMap<Double, BufferedImage> reorderBuffer; |
14 | bool done; |
15 | |
16 | void grab ctex {
|
17 | if (verbose) print("Grabbing (" + l(reorderBuffer) + ")");
|
18 | PictureWithMetadata8Bit pmd = grab.getNativeFrameWithMetadata(); |
19 | if (pmd == null) {
|
20 | done = true; |
21 | NIOUtils.closeQuietly(ch); |
22 | } else {
|
23 | BufferedImage img = AWTUtil.toBufferedImage8Bit(pmd.getPicture()); |
24 | reorderBuffer.put(pmd.getTimestamp(), img); |
25 | } |
26 | } |
27 | |
28 | O get() {
|
29 | while (!done && l(reorderBuffer) < bufferSize) |
30 | grab(); |
31 | |
32 | if (done || reorderBuffer.size() >= bufferSize) {
|
33 | if (empty(reorderBuffer)) null; |
34 | double leastPts = firstKey(reorderBuffer); |
35 | BufferedImage img = reorderBuffer.get(leastPts); |
36 | reorderBuffer.remove(leastPts); |
37 | if (verbose) print("Giving (" + l(reorderBuffer) + ")");
|
38 | ret img; |
39 | } |
40 | null; |
41 | } |
42 | }); |
43 | // TODO: close file when not all frames are grabbed |
44 | } |
Began life as a copy of #1006727
download show line numbers debug dex old transpilations
Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1006733 |
| Snippet name: | framesFromVideo_reordering |
| Eternal ID of this version: | #1006733/15 |
| Text MD5: | 5d724234a1fc233ebb5c0b1daaad909b |
| Author: | stefan |
| Category: | javax video |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2019-09-01 02:13:24 |
| Source code size: | 1502 bytes / 44 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 804 / 778 |
| Version history: | 14 change(s) |
| Referenced in: | [show references] |