Skip to content

Commit e0898d6

Browse files
committed
Add: Basic layout POC
1 parent da97bad commit e0898d6

File tree

4 files changed

+90
-5
lines changed

4 files changed

+90
-5
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33
.settings/
44
bin/
55
*.class
6-
.metadata
6+
*.metadata
7+

src/com/vd/player/AVPlayer.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package com.vd.player;
2+
3+
import java.awt.Color;
24
import java.awt.GridBagConstraints;
35
import java.awt.GridBagLayout;
46
import java.awt.image.BufferedImage;
7+
import java.util.ArrayList;
58
import java.util.List;
69
import java.util.concurrent.ArrayBlockingQueue;
710

@@ -133,6 +136,11 @@ private void playVideoAudio(ArrayBlockingQueue<BufferedImage> bufferQ,
133136
ArrayBlockingQueue<BufferedImage> availableResourcesQ) {
134137
ImageDisplayService outputDisplayService = new ImageDisplayService("Video Player");
135138
BufferedImage take;
139+
140+
List<BufferedImage> tapestry = new ArrayList<>();
141+
tapestry.add((bufferQ.peek()));
142+
tapestry.add((bufferQ.peek()));
143+
outputDisplayService.displayTapestry(VideoIOUtil.mergeImages(tapestry));
136144
for (int i = 0; i < VideoConstant.VIDEO_FRAME_COUNT; i++) {
137145
long currTime = System.nanoTime() / 1000000;
138146
try {
@@ -159,4 +167,39 @@ private void startVideoFrameBufferProducer(Video video, ArrayBlockingQueue<Buffe
159167
t.start();
160168
}
161169

170+
171+
/*public static void main(String[] args) {
172+
if (args.length < 2) {
173+
System.err.println("usage: java -jar AVPlayer.jar [RGB file] [WAV file]");
174+
return;
175+
}
176+
AVPlayer ren = new AVPlayer();
177+
// List<byte[]> framesList = ren.getAllFrames(args);
178+
// read 1st 1000 frames and display first and last frame for testing
179+
List<BufferedImage> buffImages = new ArrayList<>(2);
180+
for (int i = 0; i < 5000;) {
181+
byte[] frameBytes = VideoIOUtil.readFrameBuffer(new File(args[0]), i);
182+
// ren.displayVideo(args, framesList);
183+
BufferedImage img = VideoIOUtil.getFrame(frameBytes);
184+
buffImages.add(img);
185+
// ren.displayFrame(img, args);
186+
i += 4999;
187+
}
188+
BufferedImage intermediateImg = (mergeImages(buffImages));
189+
190+
ren.displayFrame(mergeImagesUsingPixel(intermediateImg), args);
191+
ren.playWAV(args[1]);
192+
}*/
193+
194+
private static int getAvg(int rgb1, int rgb2) {
195+
Color c1 = new Color(rgb1);
196+
Color c2 = new Color(rgb2);
197+
int red = (c1.getRed() + c2.getRed()) / 2;
198+
int blue = (c1.getBlue() + c2.getBlue()) / 2;
199+
int green = (c1.getGreen() + c2.getGreen()) / 2;
200+
Color c3 = new Color(red, blue, green);
201+
return c3.getRGB();
202+
}
203+
204+
162205
}

src/com/vd/services/ImageDisplayService.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@
33
*/
44
package com.vd.services;
55

6+
import java.awt.BorderLayout;
67
import java.awt.image.BufferedImage;
78

89
import javax.swing.ImageIcon;
10+
import javax.swing.JButton;
911
import javax.swing.JFrame;
1012
import javax.swing.JLabel;
1113
import javax.swing.JPanel;
14+
import javax.swing.JScrollPane;
1215

1316
/**
1417
* @author Vis
@@ -21,18 +24,33 @@ public class ImageDisplayService {
2124
public ImageDisplayService(String title) {
2225
frame = new JFrame(title);
2326
}
24-
/**
25-
* @param args
26-
*/
27+
2728
public static void main(String[] args) {
2829
// TODO Auto-generated method stub
2930

3031
}
3132

33+
public void displayTapestry(BufferedImage img) {
34+
JPanel mergePanel = new JPanel();
35+
JScrollPane scrollableJScrollPane = new JScrollPane(new JLabel(new ImageIcon(img)));
36+
scrollableJScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
37+
mergePanel.add(scrollableJScrollPane);
38+
frame.getContentPane().add(mergePanel, BorderLayout.SOUTH);
39+
}
40+
3241
public void displayImage(BufferedImage img) {
3342
JPanel panel = new JPanel();
3443
panel.add(new JLabel(new ImageIcon(img)));
35-
frame.getContentPane().add(panel);
44+
JButton b1 = new JButton("Play");
45+
b1.setVisible(true);
46+
JButton b2 = new JButton("Stop");
47+
JButton b3 = new JButton("Pause");
48+
frame.add(b1, BorderLayout.WEST);
49+
frame.add(b2, BorderLayout.WEST);
50+
frame.add(b3, BorderLayout.WEST);
51+
52+
53+
frame.getContentPane().add(panel, BorderLayout.CENTER);
3654
frame.pack();
3755
frame.setVisible(true);
3856
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

src/com/vd/util/VideoIOUtil.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,29 @@ private static List<BufferedImage> readBufferedImages(File file,int startFrameNo
9292
return bufferedImages;
9393
}
9494

95+
public static BufferedImage mergeImages(List<BufferedImage> buffImages) {
96+
// Initializing the final image
97+
BufferedImage finalImg = new BufferedImage(VideoConstant.VIDEO_PLAYER_WIDTH * buffImages.size(),
98+
buffImages.get(0).getHeight(), buffImages.get(0).getType());
99+
100+
int num = 0;
101+
for (int i = 0; i < 1; i++) {
102+
for (int j = 0; j < buffImages.size(); j++, num++) {
103+
finalImg.createGraphics().drawImage(buffImages.get(num), VideoConstant.VIDEO_PLAYER_WIDTH * j,
104+
buffImages.get(0).getHeight() * i, null);
105+
106+
}
107+
}
108+
System.out.println("Image concatenated.....");
109+
/*
110+
* try { ImageIO.write(finalImg, "jpeg", new File("finalImg.jpg")); }
111+
* catch (IOException e) { // TODO Auto-generated catch block
112+
* e.printStackTrace(); }
113+
*/
114+
return finalImg;
115+
116+
}
117+
95118
public static void main(String args[]) {
96119
System.out.println(frameBufferPointers.get(5999));
97120
}

0 commit comments

Comments
 (0)