Skip to content

Commit 5e7a9c4

Browse files
committed
Frame by frame seems to work
1 parent 00b0eae commit 5e7a9c4

File tree

2 files changed

+7
-11
lines changed

2 files changed

+7
-11
lines changed

Diff for: jmfsrc/com/sun/media/parser/video/AviParser.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -529,11 +529,11 @@ private void parseIDX1(int length) throws BadHeaderException {
529529
// For video tracks, if all the frames are not key frames,
530530
// build the indexToKeyframeIndex table
531531
// which maps a video frame to a key frame.
532-
System.out.println("Index keyframes");
532+
//System.out.println("Index keyframes");
533533
for (int i = 0; i < numTracks; i++) {
534534
if (trakList[i].trackType.equals(VIDEO)) {
535535
int numKeyFrames = trakList[i].numKeyFrames;
536-
System.out.println("Num keyframes "+numKeyFrames);
536+
//System.out.println("Num keyframes "+numKeyFrames);
537537
if (numKeyFrames > 0)
538538
keyFrameTrack = i;
539539
int maxChunkIndex = trakList[i].maxChunkIndex;
@@ -610,7 +610,7 @@ public Time setPosition(Time where, int rounding) {
610610
if (trakInfo.trackType.equals(VIDEO)) {
611611
if (usecPerFrame != 0) {
612612
chunkNumber = (int) (where.getNanoseconds() / nanoSecPerFrame);
613-
System.out.println("Setting position kfNum "+keyframeNum+" chunkNo "+chunkNumber);
613+
//System.out.println("Setting position kfNum "+keyframeNum+" chunkNo "+chunkNumber);
614614
if (chunkNumber < 0)
615615
chunkNumber = 0;
616616
else if (chunkNumber >= trakInfo.maxChunkIndex) {
@@ -653,7 +653,7 @@ else if (chunkNumber >= trakInfo.maxChunkIndex) {
653653
}
654654
}
655655
} finally {
656-
System.out.println("Setting tracks "+keyframeNum+" chunkNo "+chunkNumber);
656+
//System.out.println("Setting tracks "+keyframeNum+" chunkNo "+chunkNumber);
657657
((MediaTrack)tracks[i]).setChunkNumberAndOffset(chunkNumber,
658658
offsetWithinChunk);
659659
}
@@ -662,11 +662,11 @@ else if (chunkNumber >= trakInfo.maxChunkIndex) {
662662
}
663663

664664
public Time getMediaTime() {
665-
System.out.println("Acquiring media Time");
665+
//System.out.println("Acquiring media Time");
666666
for (int i = 0; i<tracks.length;++i){
667667
if (!tracks[i].isEnabled()){ continue;}
668668
if (tracks[i] instanceof VideoTrack) {
669-
System.out.println("Found VideoTrack "+((VideoTrack) tracks[i]).getTimeStamp());
669+
//System.out.println("Found VideoTrack "+((VideoTrack) tracks[i]).getTimeStamp());
670670
return (new Time(((VideoTrack) tracks[i]).getTimeStamp()));
671671
}
672672
}

Diff for: src/analysis/FrameByFrame.java

+1-5
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,6 @@ public FrameByFrame(URL sourceVideo,String targetVideo, JavaVideoAnalysis mainPr
217217
//writer = new MpngWriter(amTVstring,videoSize);
218218
//writer.writeHeader();
219219
}catch(Exception err){System.out.println("Couldn't open writer"); System.exit(0);}
220-
System.out.println("Got to reading Frame");
221220
readFrame(0);
222221
}
223222

@@ -227,25 +226,22 @@ public void readFrame(int frameNo){
227226
try{
228227
currentTime = deMultiplexer.setPosition(targetTime,javax.media.protocol.Positionable.RoundDown);
229228
}catch(Exception err){System.out.println("Search failed"); System.exit(0);}
230-
System.out.println("Searched successfully "+currentTime.getSeconds()+" target "+targetTime.getSeconds());
231229
try{
232230
tracks[videoTrack].readFrame(buffer);
233231
decoder.process(buffer,oBuf);
234232
currentTime = new Time(buffer.getTimeStamp());
235-
System.out.println("Time stamp "+currentTime.getSeconds()+" from buffer "+buffer.getTimeStamp());
236233
while ((buffer.isDiscard() || buffer.getLength()==0 ||currentTime.getSeconds() < targetTime.getSeconds() )&& !buffer.isEOM()) { // && buffer.getSequenceNumber()<frameNo){
237234
tracks[videoTrack].readFrame(buffer);
238235
decoder.process(buffer,oBuf);
239236
currentTime = new Time(buffer.getTimeStamp());
240-
System.out.println("within loop "+currentTime.getSeconds()+" from buffer "+buffer.getTimeStamp());
241237
}
242238
}catch(Exception err){System.out.println("ReadFrame failed"); System.exit(0);}
243239
System.out.println("Time stamp after loop"+currentTime.getSeconds());
244240
if (!buffer.isEOM()){
245241
decoder.process(buffer,oBuf);
246242
frameData = (int[]) oBuf.getData();
247243
printImage(frameData,videoSize);
248-
mainProgram.status.setText("Frame Seq#: "+buffer.getSequenceNumber());
244+
mainProgram.status.setText("Frame Seq#: "+tracks[videoTrack].mapTimeToFrame(currentTime.getSeconds()));
249245
}else{
250246
mainProgram.status.setText("End of file reached");
251247
}

0 commit comments

Comments
 (0)