Ticket #2496 (closed bug: obsolete)

Opened 15 years ago

Last modified 13 years ago

video-performance-natives

Reported by: boyanl Owned by: boyanl
Priority: major Milestone:
Component: MEDIA_CONTENT Version: 2.0
Keywords: video, Cc:
Category: unknown Effort:
Importance: Ticket_group:
Estimated Number of Hours: 0 Add Hours to Ticket: 0
Billable?: yes Total Hours: 0
Analysis_owners: boyanl Design_owners: boyanl
Imp._owners: boyanl Test_owners:
Analysis_reviewers: pap Changelog: Changelog
Design_reviewers: pap Imp._reviewers: deyan, todor, pap
Test_reviewers: Analysis_score: 3
Design_score: 3.5 Imp._score: 3.5
Test_score: 0

Description

The video in Sophie2 is still slow, so maybe investigation of the underlying decoders is needed.

Attachments

videoPerformance_java.patch (10.5 KB) - added by boyanl 15 years ago.
videoPerformance_natives.patch (11.1 KB) - added by boyanl 15 years ago.
ffmpeg-0.6.tar.bz2 (3.5 MB) - added by boyanl 15 years ago.
videoPerformance_java_2.patch (14.6 KB) - added by boyanl 15 years ago.
videoPerformance_natives_2.patch (12.4 KB) - added by boyanl 15 years ago.

Change History

comment:1 Changed 15 years ago by boyanl

  • Type changed from feature to planned_task

comment:2 Changed 15 years ago by boyanl

  • Type changed from planned_task to bug

comment:3 Changed 15 years ago by boyanl

  • Status changed from new to s1b_analysis_finished

comment:4 Changed 15 years ago by boyanl

  • Design_owners set to boyanl
  • Status changed from s1b_analysis_finished to s2a_design_started
  • Imp._owners set to boyanl

comment:5 Changed 15 years ago by boyanl

Changes to Sophie2-Platform

  • Changes to BinReader
    • Optimize readByte and readArray - instead of delegating to the underlying BinData (which we know is a RawBinData), we fetch all the bytes at construction and then just index the array. Similarly, in readArray, we use System.arraycopy (which can potentially be faster).
  • Changes to BinWriter
    • Add addBytes method, which adds an array of bytes to the data.
  • Add a class FastByteArrayOutputStream, which is a ByteArrayOutputStream implementation, which doesn't synchronize methods and doesn't copy the data when it's requested.
  • Changes to RawBinData
    • Use FastByteArrayOutputStream instead of ByteArrayOutputStream when constructing it with a given size.
    • Change getBytes to not copy the data before returning it. It should be copied manually when we want to modify the returned data without modifying the RawBinData.
  • Changed to size of buffers in BinData so that commands with video data are transported in 1 read (3 before)
  • Fixed an error in SpellCheckDemoTest


Changes to Sophie2-Native

  • Changes to the media decoder
    • Move the initalization of the structure used for conversion from decodeFrame to initVideo
    • Optimize the copy in saveFrame (this relies on the vector being continuous in memory, but this is standard)
    • Re-built the media decoder with FFMpeg 0.6
  • Changes to java messages
    • readBinData accepts the resulting vector as a third argument instead of returning it (to avoid copying)
    • Optimize the copy in readBinData and writeBinData
    • Removed inconsistencies with mixed fread/cin.read or fwrite/cin.write (all are fread/fwrite)
  • Changes to audio output
    • Attempt to optimize the copying by unrolling two loops
  • Both media decoder and audio output are built using -O3 now (instead of -Os)

Changed 15 years ago by boyanl

Changed 15 years ago by boyanl

Changed 15 years ago by boyanl

comment:6 Changed 15 years ago by boyanl

Note: ffmpeg-0.6.tar.bz2 should be placed under sophie2-native/lib-src

comment:7 Changed 15 years ago by boyanl

  • Status changed from s2a_design_started to s2b_design_finished

comment:8 Changed 15 years ago by pap

  • Status changed from s2b_design_finished to s2c_design_ok
  • Design_score changed from 0 to 3.5
  • Design_reviewers set to pap
  • Analysis_reviewers set to pap
  • Analysis_score changed from 0 to 3
  • Seem ok.
  • I dislike the proposed representation exposure in RawBinData. So I suggest not using it unless it is really really necessary.

comment:9 Changed 15 years ago by boyanl

  • Owner set to boyanl
  • Status changed from s2c_design_ok to s3a_implementation_started

comment:10 Changed 15 years ago by boyanl

  • Status changed from s3a_implementation_started to s3b_implementation_finished

Changed 15 years ago by boyanl

Changed 15 years ago by boyanl

comment:11 Changed 15 years ago by boyanl

  • Attempting to fix video synchronization issue (NativeMediaHandler gets the framerate of the video and if we attempt to get frames within less than 1000/framerate millis, the same frame is returned)

comment:12 Changed 15 years ago by pap

  • Status changed from s3b_implementation_finished to s3c_implementation_ok
  • Imp._score changed from 0 to 3.5
  • Imp._reviewers set to deyan, todor, pap
  • Committed in [9271], [9272] and [9273].
  • Accepted
  • I decided not to use the proposed representation exposure in the RawBinData.getBytes method.
  • some bad spacing here and there but otherwise good.

comment:13 Changed 13 years ago by meddle

  • Status changed from s3c_implementation_ok to closed
  • Resolution set to obsolete

Closing all the tickets before M Y1

Note: See TracTickets for help on using tickets.