Commit Graph

326 Commits

Author SHA1 Message Date
Calvin Walton
36a6b0f5ac RaP: Scale to a square when generating slide images for pres. format
This improves the quality of portrait documents, before they were
1200px when landscape documents got 1600px.

Switching to scaling to a square means that we can use the "-scale-to"
option on pdftocaio, which means that it generates images directly
at the desired size. This can save quite a bit of time (and memory)
if a document was uploaded with extremely large page size.
2018-05-16 11:54:35 -04:00
Calvin Walton
bfcaa5aaa3 Check for new webrtc deskshare event in presentation slide code 2018-04-25 16:00:13 -04:00
Calvin Walton
e2b40cc5bd Rework a bunch of the code to avoid repeatedly reparsing the events.xml 2017-11-08 10:12:25 -05:00
Calvin Walton
f9c4843f28 Cleanups, initial work on checking for segment recorded status. 2017-11-03 15:17:04 -04:00
Leonardo Crauss Daronco
af87bc2d3f Merge remote-tracking branch 'upstream/master' into v1.1.0-rap-on-resque 2017-10-09 16:37:28 -03:00
Calvin Walton
399b1cb543 RnP: Don't fail processing if an image can't be converted to png 2017-09-05 11:21:16 -04:00
Calvin Walton
b810939643 RnP: Fix parsing poll fields as numbers rather than text 2017-08-30 14:51:52 -04:00
Calvin Walton
e81d77a318 RnP: Fix shape type name for poll shapes 2017-08-30 14:42:29 -04:00
Calvin Walton
2d19cd7b7b Make the fallback slide images transparent, so the logo is visible 2017-08-25 16:05:46 -04:00
Calvin Walton
195b499e06 RnP: Fix square/circle rendering
Different parts of the code were using symbol vs string keys, so
the circle/square code never got applied. Use symbols everywhere for
consistency.
2017-08-25 15:46:03 -04:00
Calvin Walton
a3a530553a RnP: Force re-encoding text from textfiles into UTF-8
Some old recordings might have invalid or legacy encoding stuff
in the text files. To allow processing to continue, just re-encode int
UTF-8 with the invalid option set to replace, to remove the invalid
characters.
2017-08-25 14:02:09 -04:00
Calvin Walton
0d91b9444e RnP: Some shapes in BBB 2.0 now have sharp corners 2017-08-25 11:39:00 -04:00
Calvin Walton
243afcd90c RnP: Make 'presentation_props' a global var so it can be accessed in functions 2017-08-23 12:22:46 -04:00
Calvin Walton
ba1e0e09c2 RnP: Add image id to shape ids
This ensures that the same shape in two different images will
get different ids for each, so that the drawing code will handle it
correctly.
2017-08-21 16:40:53 -04:00
Calvin Walton
62465d4c47 RnP: Convert BBB 2.0 cursor positions to be relative to viewbox
In BBB 2.0, the cursor positions are given relative to the page
size (like annotation positions). Since the recording cursors
aren't actually drawn in the page like annotations, it's more
convenient to have them relative to the visible area (viewbox),
so do that conversion.

While I'm in here - since we switched to new incompatible scripts
for BBB 2.0 anyways - remove an extra factor in the cursor positions
in cursor.xml, and just use a simple ratio of width/height instead.
2017-08-21 14:44:41 -04:00
Calvin Walton
c925a36c7b RnP: Calculate the cursor position based on pan/zoom info 2017-08-21 12:24:19 -04:00
Calvin Walton
08f00eb35e RnP: Fix variable name of bbb 2.0 version check 2017-08-18 17:50:34 -04:00
Calvin Walton
f66d4a2849 RnP: Syntax fixes for presentation text fix... 2017-08-18 17:07:14 -04:00
Calvin Walton
2b51f39c62 RnP: Fix issues in presentation publish
- Need to look in the process dir to find the images (and create new ones)
- Don't set the text attributes on slides that do not have text (logo)
2017-08-18 16:56:45 -04:00
Calvin Walton
1390224efc RnP: Use correct dir to find presentation images 2017-08-18 16:39:18 -04:00
Calvin Walton
dba5cd9196 Various recording script fixes & cleanups
This is just a bundle of a few things I've been fixing up in the past
while.

= Workaround for BBB 1.1 beta deskshare timestamp bug

This is unlikely to be used, but I have the code for it, might as
well merge it in.

= Rework video tiling code for ffmpeg

Render video using the 'hstack' and 'vstack' filters rather than the
'overlay' filter. This is somewhat faster, particularly with lots of
videos.

= Etc.

- Remove usage of the streamio-ffmpeg gem.
  The video rendering code has some stuff to directly read 'ffprobe'
  output, so re-use that instead of this gem (which is kind of old and
  has issues with newer ffmpeg versions).

- Don't hardcode the deskshare video area size, pull it from the
  properties file

- Remove some code that worked around missing video end events.
  In some cases this could cause flickering or strange video issues.
  It's no longer strictly needed, the new tiling code doesn't break if
  the seekpoint is after the end of the video.
2017-08-18 15:24:54 -04:00
Calvin Walton
321119a79e Create a new 2.0 recording playback directory, revert 0.9.0 to old shapes code.
The new shapes code, required for handling smooth shape updates & multi-user
whiteboard in the 2.0 BigBlueButton, hits a bug in old recordings where
the pencil tool incorrectly used "line" in its shape names, meaning that
there could be both a pencil mark and a line with the same shape name.

The old recording code didn't rely on the shape name to match shapes, since
there was no chance of concurrent shapes. As this is an incompatible playback
change, we need to make a new playback directory for the updated files.
2017-08-18 11:34:15 -04:00
Calvin Walton
d24c8f8af2 RnP: BBB <0.9 also had off-by-one on the undo and clear messages 2017-08-17 15:44:13 -04:00
Calvin Walton
04002f687f Revert to the pre-2.0 capitalization of 'userid' in presenter event 2017-08-17 14:29:54 -04:00
Calvin Walton
50bf20f726 Rewrite recording processing handling of shapes, panzooms, cursor
The old code was very difficult to follow, and I couldn't figure out
a good way to retrofit the BigBlueButton 2.0 undo by shape id and clear
by user id into it - so I rewrote the entire thing instead.

It now generates the shapes.svg, panzooms.xml and cursor.xml all at the
same time during a single pass through the event.xml file. The result
is compatible with the existing recording javascript (at least once a few
minor issues in writing.js were fixed by earlier commits).
2017-08-17 13:33:00 -04:00
Calvin Walton
aac50a077e Fix dot thickness for degenerate pencil shapes 2017-08-09 14:04:17 -04:00
Calvin Walton
005965e4b1 Pencil commands are strings 2017-08-03 12:42:38 -04:00
Calvin Walton
8a36ac5469 Fix typo in 'commands' variable name 2017-08-03 12:40:56 -04:00
Calvin Walton
05d6859170 Shape commands is spelt with an s 2017-08-03 12:24:35 -04:00
Calvin Walton
98fad425aa Add path 'command' handling for BBB 2.0 smooth drawing 2017-08-03 12:17:48 -04:00
Calvin Walton
8f142b9541 Shape thickness is a percentage, not fraction 2017-08-03 11:41:28 -04:00
Calvin Walton
f6c49847fb Use new shape thickness calculation on BBB 2.0
Thickness is now fraction of page width, rather than "pixels" on
an unspecified screen size.
2017-08-03 11:21:51 -04:00
Calvin Walton
f176682abb Move the slide size storage back inside the loop 2017-08-03 10:50:14 -04:00
Calvin Walton
728eb19dc6 Fix name of 'GotoSlideEvent' 2017-08-03 10:47:30 -04:00
Calvin Walton
3f43294dc0 Fix syntax issue in presentation publish script 2017-08-03 10:40:17 -04:00
Calvin Walton
0913534108 Have presentation recording script remember current slide
This fixes recording generation on BBB 2.0, where there is no longer
an automatic GotoSlide sent after every SharePresentation
2017-08-02 17:14:29 -04:00
Leonardo Crauss Daronco
72813a908c Move sanity, process and publish rap workers to run in resque
Same as 1bcdc45 but for the other scripts.
2017-07-13 14:36:43 -03:00
Pedro Beschorner Marin
15c6420e97 Merge tag 'v1.1.0' into 1.1-transcode
tagging v1.1.0 release

 Conflicts:
	bbb-common-message/src/main/java/org/bigbluebutton/common/messages/RegisterUserMessage.java
	bbb-web-api/src/main/java/org/bigbluebutton/api/messaging/RedisMessagingService.java
	bigbluebutton-client/resources/config.xml.template
	bigbluebutton-client/src/org/bigbluebutton/modules/layout/managers/LayoutManager.as
	bigbluebutton-client/src/org/bigbluebutton/modules/phone/PhoneOptions.as
	bigbluebutton-client/src/org/bigbluebutton/modules/phone/views/components/ToolbarButton.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreensharePublishWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreenshareViewWindow.mxml
	record-and-playback/core/scripts/rap-process-worker.rb
2017-06-13 17:44:12 +00:00
Pedro Beschorner Marin
719ef1377a Merge remote-tracking branch 'mconf' into merging-into-bbb-1.1
Conflicts:
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MeetingActor.scala
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/ValueObjects.scala
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/UsersApp.scala
	bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java
	bbb-video/src/main/java/org/bigbluebutton/app/video/converter/VideoRotator.java
	bigbluebutton-client/locale/en_US/bbbResources.properties
	bigbluebutton-client/locale/pt_BR/bbbResources.properties
	bigbluebutton-client/resources/prod/MconfLive.html
	bigbluebutton-client/src/org/bigbluebutton/common/Images.as
	bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/utils/BrowserCheck.as
	bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/utils/JavaCheck.as
	bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/view/components/DesktopPublishWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/PresentationWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/users/views/UsersWindow.mxml
	bigbluebutton-config/bin/bbb-conf
	record-and-playback/core/lib/recordandplayback/generators/audio_processor.rb
	record-and-playback/core/lib/recordandplayback/generators/video.rb
	record-and-playback/core/scripts/rap-worker.rb
	record-and-playback/presentation/playback/presentation/0.9.0/lib/writing.js
	record-and-playback/presentation/scripts/process/presentation.rb
	record-and-playback/presentation/scripts/publish/presentation.rb
2017-06-07 19:31:15 +00:00
alexandre
c75a19d990 function is_video_valid returns true if video is valid 2017-05-23 17:02:26 -03:00
Felipe Cecagno
654fd8c553 fix issue introduced by last commit, in which the full path of the deskshare video file was not provided in order to check if it was a valid video or not 2017-05-16 13:55:48 -03:00
Felipe Cecagno
9f6ef49847 check if the deskshare video file is valid before processing it 2017-05-07 19:12:34 -03:00
Pedro Beschorner Marin
000d0a038e Fixed multiline text annotations in playback 2017-04-27 17:43:35 +00:00
Pedro Beschorner Marin
b52bf09a45 Fixed wrong font sizes and placement in playback so now they match the annotated text from the presentation 2017-04-27 17:31:48 +00:00
Pedro Beschorner Marin
d55f0dddf5 Fixed multiline text annotations in playback 2017-04-26 18:59:55 +00:00
Calvin Walton
da79ecdada Handle BBB 0.81 slide/pageNumber base mismatch
In BBB 0.81, the slide number was base 0, while the shape page number was
base 1. We already have a conditional for checking 0.9+; use that to
add a workaround for old BBB recordings.
2017-04-26 14:02:52 -04:00
Calvin Walton
a5adebd3e0 Use the presentation name/page number to match shapes to pages, not time.
The previous code assumed that if a shape event's timestamp was during the
time when a particular slide was visible, then the shape belonged to that
slide. This isn't always true with the text shapes, since a final close
event can be sent after the slide has switched.

For a more future-proof matching, use the presentation name and page number
fields on the shape events when available to match them with the appropriate
slide image.
2017-04-26 14:02:52 -04:00
Pedro Beschorner Marin
660574fcfa Fixed wrong font sizes and placement in playback so now they match the annotated text from the presentation 2017-04-26 14:18:08 +00:00
alexandre
f8c976fd54 Certifying that we process the audio before getting it in AudioProcessor 2017-04-13 17:23:13 -03:00
Calvin Walton
e77b50d2c6 recording presentation: Reduce the top/bottom margin so bars fit better
gnuplot's auto-margins don't work well on this graph, so manually specify
the top/bottom (actually left/right - the graph is rotated 90°) to make
the bars fit better, particularly when using wide aspect ratio slides.
2017-04-06 18:04:10 -04:00
Calvin Walton
0a1667f293 recording presentation: Correctly calculate width of bar in poll results
The code was previously dividing by the total number of votes rather than
the max number of votes, which meant it was underestimating the width of
the bars. In some cases, this meant that the label for number of votes would
overlap the percentages.

Fixes #3725
2017-04-06 14:35:31 -04:00
Pedro Beschorner Marin
f59e42bb02 Merge remote-tracking branch 'bigbluebutton/master' into merging-into-bbb-1.1 2017-04-04 20:42:15 +00:00
Pedro Beschorner Marin
0ab207c997 Merge remote-tracking branch 'mconf/mconf' 2017-03-21 19:47:11 +00:00
Pedro Beschorner Marin
c74cc682c4 Merge remote-tracking branch 'mconf/mconf' 2017-03-20 19:45:59 +00:00
Richard Alam
3c397d8d71 - fix copying of meeting element into metadata.xml 2017-03-15 09:45:58 -07:00
Richard Alam
72c42f9d70 - build get recordings api response 2017-03-13 21:43:39 +00:00
Richard Alam
4e59521268 - store breakout metadata and breakout rooms in events.xml only if they are present. 2017-03-10 19:39:20 +00:00
Richard Alam
71bcd779b7 - process breakout rooms in events.xml and metadata.xml 2017-03-09 23:01:15 +00:00
Pedro Beschorner Marin
490ecd2157 Reverting some modifications made in presentation publish script for deskshare video 2017-02-24 13:46:32 +00:00
Pedro Beschorner Marin
3e43602b33 Changed deskshare start/stop matching method 2017-02-23 20:17:16 +00:00
Pedro Beschorner Marin
6787915e0e Refactored deskshare video recording 2017-02-23 18:21:10 +00:00
alexandre
f39874ac9b Returning number of users that participated in each meeting in getRecordings call
Resolves #3623
2017-02-10 16:19:32 -02:00
alexandre
dfa5a305cc Handling deskshare when closing meeting or stop recording
Closing the room or stopping recording with an active deskshare was producing an incorrect recording
2017-02-01 16:38:39 +00:00
Pedro Beschorner Marin
b89a31bb9a Merge remote-tracking branch 'playback-speedup' into mconf
Conflicts:
	record-and-playback/presentation/playback/presentation/0.9.0/lib/writing.js
	record-and-playback/presentation/scripts/process/presentation.rb
	record-and-playback/presentation/scripts/publish/presentation.rb
	record-and-playback/presentation_export/playback/presentation_export/lib/writing.js
2017-01-26 18:10:20 +00:00
Pedro Beschorner Marin
adbb81e1c5 Cleanup 2016-12-21 18:35:21 +00:00
kreismann
f93114e207 Fixing deskshare panzooms
- Getting slide dimensions to properly set the panzoom event when deskshare stops.
- Sometimes there's a panzoom event with the deskshare image dimension at time=stop_timestamp+0.1. We remove it.
- Little refactoring
2016-12-19 15:11:32 -02:00
Pedro Beschorner Marin
8ca6ecacee Merge remote-tracking branch 'alexandrekreis/mconf' into deskshare-whiteboard 2016-12-15 17:20:08 +00:00
Pedro Beschorner Marin
ac9504fdd2 Annotations over deskshare whiteboard at playback 2016-12-15 17:19:10 +00:00
kreismann
6a29fd832e Handling deskshare on processClearEvents 2016-12-14 14:50:34 -02:00
kreismann
37660e4e13 Fixing some bugs
- Properly inserting deskshare panzoom events. We insert a panzoom event with the deskshare video dimensions and the deskshare start timestamp. Immediately, we insert another panzoom event with the previous slide dimensions and the deskshare stop timestamp, deleting any other panzoom event inside this interval of time.
- Handling when deskshare events occur in timestamp = 0.0
- For now, we are limiting the max dimensions to 1280x720
2016-12-12 16:29:06 -02:00
kreismann
be87eeddbd Creating only one image for deskshare
So we can retrieve deskshare history. Still need to adapt the size of annotations on different deskshare resolutions.
2016-12-02 17:40:50 -02:00
kreismann
6aeabb9293 Correctly handling multiple deskshare events inside a slide interval of time 2016-12-02 15:34:49 -02:00
Pedro Beschorner Marin
e5c48cb7be Replaced the playback spinner for a loading bar and included a not-found meeting fallback page 2016-12-01 18:13:26 +00:00
kreismann
fe9fde2330 Getting flv resolution to set deskshare image and pan/zoom dimensions 2016-11-30 16:31:19 -02:00
kreismann
e27c291ee0 Recording playback shows whiteboard annotations on deskshare video as well
Pending issues:
- Image and ViewBox sizes are hardcoded (1280x720 - a full screen deskshare video). In order to work with region deskshare videos, we must get the flvs resolutions and set shapes.svg and panzooms accordingly.
- We're not considering the deskshare annotations history yet
2016-11-29 15:08:28 -02:00
Pedro Beschorner Marin
c8acfbf65a Getting slides associated text from a single JSON file 2016-11-29 14:00:19 +00:00
kreismann
73603d5d68 Presentation area of the recording playback also shows deskshare video
This is a demo. Some issues:

- When sharing desktop, cursor is still relative to slides, and not to deskshare video;
- Need to show whiteboard canvas on top of deskshare video as well;
- Need more testing (audio/video sync, playback perfomance, multiple presenters and multiple deskshare events).
2016-10-20 17:39:35 -02:00
jfederico
d2a633a27b record-and-playback: Forced alt to be included as part of the image thumbnail element in preview extension 2016-09-27 16:02:20 -04:00
jfederico
1a4438d459 record-and-playback: Fixed issue with presentations containing less than 3 slides 2016-09-27 15:19:53 -04:00
jfederico
78cb599a5b record-and-playback: removed text element from extension preview 2016-09-22 13:11:01 -04:00
jfederico
59c67809d0 recording-and-playback: Added alt text to the preview per slide 2016-09-21 16:39:32 -04:00
jfederico
8adf729e0f recording-and-playback: Added general text to the preview 2016-09-20 16:46:45 -04:00
jfederico
45ba7d85c2 record-and-playback: Filtered presentation files to provide only the first thumbnail for default.pdf 2016-09-20 14:10:28 -04:00
jfederico
f9d76b4739 recording-and-playpack: Includes thumbnails as an extension of the playbacks 2016-09-19 18:09:31 -04:00
jfederico
90108bf29c record-and-playback: Include default thumbnails into recordings 2016-09-19 14:52:32 -04:00
Felipe Cecagno
79c3c12256 Merge branch 'merge-presentation-deskshare' into mconf
Conflicts:
	bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/view/components/DesktopPublishWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/view/components/DesktopViewWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/PresentationWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/views/WhiteboardToolbar.mxml
	record-and-playback/presentation/playback/presentation/0.9.0/lib/writing.js
2016-09-14 14:49:48 -03:00
kreismann
b961e197c5 Not showing annotation canvas while sharing desktop in recording
1. We create a deskshare.xml with start and stop timestamps of each deskshare event
2. We read it in playback e use its information to hide the annotation canvas and cursor accordingly
2016-09-09 18:31:27 -03:00
Fred Dixon
8f5173710d Merge pull request #3283 from kepstin/recording-cleanups
Recording cleanups
2016-08-12 16:19:39 -04:00
Calvin Walton
fc4ae4c6b4 RnP: Use correct directory when loading captions.json 2016-08-12 15:41:41 -04:00
Calvin Walton
bfb987dc01 Make shape rendering in presentation recordings closer to live BBB 2016-08-12 11:53:01 -04:00
Calvin Walton
c4d4e1a08a RnP: Generate blank video when the recording has captions
Right now the captions are only rendered if there's a video present. If
the meeting doesn't have a video (webcam or desktop sharing), we'll need
to just make up a blank one.
2016-08-04 13:23:15 -04:00
Calvin Walton
2b8d7a9858 Merge remote-tracking branch 'origin/master' into recording-captions 2016-08-02 10:49:05 -04:00
Pedro Beschorner Marin
4c432ee5bd Merge branch 'feature-1931' into rafafp-branches-merged-1.0
Conflicts:
	bigbluebutton-client/branding/default/style/css/BBBDefault.css
	bigbluebutton-client/src/org/bigbluebutton/modules/chat/views/ChatBox.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/chat/views/ChatToolbar.mxml
	record-and-playback/presentation/scripts/publish/presentation.rb
2016-06-22 13:06:51 +00:00
Anton Georgiev
c2e6fb9a72 undo some of the webrtc ds record changes 2016-05-18 17:34:30 +00:00
Anton Georgiev
92d6351c55 undo some of the webrtc ds record changes 2016-05-18 17:21:15 +00:00
Anton Georgiev
228dfb4061 Merge branch 'mod-verto-1' of github.com:antobinary/bigbluebutton into merge-webrtc-ds
Conflicts:
	akka-bbb-apps/build.sbt
	akka-bbb-apps/src/main/resources/application.conf
	akka-bbb-apps/src/main/scala/org/bigbluebutton/SystemConfiguration.scala
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MessageSenderActor.scala
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/UsersApp.scala
	akka-bbb-fsesl/build.sbt
	bbb-common-message/build.sbt
	bbb-fsesl-client/build.sbt
	bbb-fsesl-client/src/main/java/org/freeswitch/esl/client/inbound/Client.java
	bigbluebutton-apps/build.gradle
	bigbluebutton-client/build.xml
	bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/utils/BrowserCheck.as
	bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/utils/JavaCheck.as
	bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/view/components/DesktopPublishWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageReceiver.as
	bigbluebutton-html5/app/client/NotificationControl.coffee
	bigbluebutton-html5/app/client/globals.coffee
	bigbluebutton-html5/app/client/lib/bbb_api_bridge.coffee
	bigbluebutton-html5/app/client/main.coffee
	bigbluebutton-html5/app/client/main.html
	bigbluebutton-html5/app/client/stylesheets/whiteboard.less
	bigbluebutton-html5/app/client/views/chat/chat_bar.coffee
	bigbluebutton-html5/app/client/views/modals/settings.coffee
	bigbluebutton-html5/app/client/views/modals/settings.html
	bigbluebutton-html5/app/client/views/users/user_item.coffee
	bigbluebutton-html5/app/client/views/whiteboard/whiteboard.coffee
	bigbluebutton-html5/app/client/views/whiteboard/whiteboard.html
	bigbluebutton-html5/app/collections/collections.coffee
	bigbluebutton-html5/app/config.coffee
	bigbluebutton-html5/app/lib/router.coffee
	bigbluebutton-html5/app/server/collection_methods/meetings.coffee
	bigbluebutton-html5/app/server/collection_methods/users.coffee
	bigbluebutton-html5/app/server/publish.coffee
	bigbluebutton-html5/app/server/server.coffee
	bigbluebutton-web/src/java/org/bigbluebutton/api/MeetingService.java
	record-and-playback/presentation/scripts/process/presentation.rb
	record-and-playback/presentation/scripts/publish/presentation.rb
2016-05-18 15:14:04 +00:00
Calvin Walton
4ebe2e7773 presentation format: Generate vtt caption files 2016-04-04 16:11:48 -04:00
Felipe Cecagno
c818cd154b Merge remote-tracking branch 'bigbluebutton/master' into mconf 2016-03-09 12:05:32 -03:00
Calvin Walton
0f9b36bc11 recording: Escape custom poll answers in gnuplot file
Custom poll answers were previously printed into the gnuplot control
file directly, between double-quotes. As a result, if a poll answer
contains a double-quote, it could cause a syntax error in the gnuplot
script, or worse.

Gnuplot accepts standard C-style double-quoted string escapes, so I can
just use ruby's "inspect" method to generate a safetly escaped string.

Note that within the string, % still has to be escaped separately
(doubled) to avoid issues with the string formatting. As well, I have
disabled "enhanced" mode which allows using special characters for
formatting commands.

Fixes #3039
2016-03-07 11:26:17 -05:00
Felipe Cecagno
bbcfe1f34a Merge remote-tracking branch 'bigbluebutton/master' into mconf
Conflicts:
	bigbluebutton-html5/app/client/globals.js
	bigbluebutton-html5/app/client/main.html
	bigbluebutton-html5/app/client/views/whiteboard/whiteboard.html
2016-03-04 20:19:55 -03:00
RafaFP
89ac2fd60a Improved the code to meet the peer review results.
refs #1931
2016-03-04 17:40:48 +00:00
Calvin Walton
3a3d349553 recording: Restore the $meeting_start/end global variables
These were commented out, apparently by accident, when the metadata code
was being refactored. The effect was that the $meeting_end variable was
treated as if it had a value of zero, meaning that the last slide had a
start time of some positive number and an end time of zero. As a result,
it was never shown (and didn't get any shapes either).

Fixes #3021
2016-03-03 11:27:28 -05:00
RafaFP
932de9c07f Updated class and method names to better correspond to the implemented function.
Improved the recording code.

refs #1931
2016-03-02 16:02:30 +00:00
Felipe Cecagno
e4da408c08 Merge branch 'mconf' into bigbluebutton/bigbluebutton@master
Conflicts:
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/UsersApp.scala
	bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/service/PresentationService.java
	bigbluebutton-client/locale/en_US/bbbResources.properties
	bigbluebutton-client/resources/prod/bbb-deskshare-applet-0.9.0.jar
	bigbluebutton-client/resources/prod/bbb-deskshare-applet-unsigned-0.9.0.jar
	bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/layout/services/MessageReceiver.as
	bigbluebutton-client/src/org/bigbluebutton/modules/users/views/StatusItemRenderer.mxml
	bigbluebutton-config/web/index.html
	bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy
	bigbluebutton-web/src/groovy/org/bigbluebutton/api/RecordingServiceHelperImp.groovy
	bigbluebutton-web/src/java/org/bigbluebutton/api/MeetingService.java
	bigbluebutton-web/src/java/org/bigbluebutton/api/ParamsProcessorUtil.java
	bigbluebutton-web/src/java/org/bigbluebutton/api/RecordingService.java
	bigbluebutton-web/src/java/org/bigbluebutton/api/RecordingServiceHelper.java
	bigbluebutton-web/src/java/org/bigbluebutton/api/domain/Recording.java
	bigbluebutton-web/web-app/WEB-INF/freemarker/get-recordings.ftl
	record-and-playback/presentation/playback/presentation/0.9.0/playback.html
	record-and-playback/presentation/scripts/publish/presentation.rb
2016-03-02 01:19:09 -03:00
RafaFP
32f937def8 Implemented the clearing of text in the recordings player.
Recordings will now clear the chat box for every clear command received during the recording.

refs #1931
2016-02-26 21:18:14 +00:00
jfederico
503b748b22 record-and-playback: Placed code for producing the initial metadata.xml file at the top 2016-02-12 12:08:33 -05:00
jfederico
0c2eaf5f11 record-and-playback: Fixed bug in original state of recordings. 2016-02-09 17:26:29 -05:00
jfederico
c9abb24a06 record-and-playback: Formatted xml produced for metadata.xml after adding playback 2016-01-28 10:13:45 -05:00
jfederico
983e58922e record-and-playback: metadata.xml is generated by process script instead of publish 2016-01-26 17:16:28 -05:00
jfederico
1204ae9f2a recording-and-playback: Added initial metadata.xml as part of the processing 2016-01-26 14:25:02 -05:00
jfederico
8e3c0ea983 recording-and-playback: Changed initial state on recording metadata.xml to published 2016-01-19 14:53:33 -05:00
jfederico
8bc75ab2f6 recording-and-playback: Converted tabs to spaces on presentation/scripts/* and core/scripts/*
Signed-off-by: jfederico <jesus@123it.ca>
2016-01-19 14:52:28 -05:00
Felipe Cecagno
8f08e13dcc Merge remote-tracking branch 'bigbluebutton/master' into mconf
Conflicts:
	bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/messaging/ConnectionInvokerService.java
	bigbluebutton-client/locale/pt_BR/bbbResources.properties
	bigbluebutton-client/resources/prod/lib/bbb_webrtc_bridge_sip.js
2015-12-30 18:35:13 -02:00
Anton Georgiev
7bf1d4ce8c Merge branch 'master' of github.com:bigbluebutton/bigbluebutton into webrtc-desktop-temp-3
Conflicts:
	record-and-playback/core/scripts/bigbluebutton.yml
2015-11-30 21:44:04 +00:00
Felipe Cecagno
555e037d79 fix merge and refactor a few pieces to fit better on BigBlueButton 1.0.0 2015-11-30 01:06:38 -02:00
Pedro Beschorner Marin
36bbcc06d6 Merge remote-tracking branch 'mconf/mconf-live0.7.3' into mconf-live0.7.3-merge
Conflicts:
	akka-bbb-apps/src/main/java/org/bigbluebutton/core/api/IBigBlueButtonInGW.java
	akka-bbb-apps/src/main/java/org/bigbluebutton/core/pubsub/receivers/ConversionUpdatesProcessor.java
	akka-bbb-apps/src/main/java/org/bigbluebutton/core/pubsub/receivers/MeetingMessageReceiver.java
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/PesentationMessageToJsonConverter.scala
	bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Constants.java
	bbb-video/.classpath
	bbb-video/build.gradle
	bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java
	bbb-video/src/main/webapp/WEB-INF/red5-web.xml
	bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/meeting/messaging/red5/ConnectionInvokerService.java
	bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsApplication.java
	bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsListener.java
	bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/presentation/PresentationMessageListener.java
	bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/BigBlueButtonApplication.java
	bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/service/ParticipantsService.java
	bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/service/PresentationApplication.java
	bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonInGW.scala
	bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/CollectorActor.scala
	bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/MeetingActor.scala
	bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/api/Constants.scala
	bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/api/InMessages.scala
	bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/api/MessageNames.scala
	bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/api/OutMessages.scala
	bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/api/ValueObjects.scala
	bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/apps/layout/LayoutApp.scala
	bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/apps/presentation/PresentationModel.scala
	bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/apps/presentation/red5/PresentationClientMessageSender.scala
	bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/apps/users/UsersApp.scala
	bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/apps/users/UsersModel.scala
	bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/apps/users/red5/UsersClientMessageSender.scala
	bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/apps/users/redis/UsersEventRedisPublisher.scala
	bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/apps/users/redis/UsersMessageToJsonConverter.scala
	bigbluebutton-apps/src/main/webapp/WEB-INF/red5-web.xml
	bigbluebutton-client/branding/default/style/css/BBBDefault.css
	bigbluebutton-client/locale/en_US/bbbResources.properties
	bigbluebutton-client/locale/es_LA/bbbResources.properties
	bigbluebutton-client/resources/config.xml.template
	bigbluebutton-client/resources/prod/MconfLive.html
	bigbluebutton-client/resources/prod/bbb-deskshare-applet-0.9.0.jar
	bigbluebutton-client/resources/prod/bbb-deskshare-applet-unsigned-0.9.0.jar
	bigbluebutton-client/src/BigBlueButton.mxml
	bigbluebutton-client/src/SharedNotesModule.mxml
	bigbluebutton-client/src/org/bigbluebutton/common/Images.as
	bigbluebutton-client/src/org/bigbluebutton/core/managers/ReconnectionManager.as
	bigbluebutton-client/src/org/bigbluebutton/core/model/Config.as
	bigbluebutton-client/src/org/bigbluebutton/core/services/BandwidthMonitor.as
	bigbluebutton-client/src/org/bigbluebutton/core/services/StreamMonitor.as
	bigbluebutton-client/src/org/bigbluebutton/main/api/ExternalApiCallbacks.as
	bigbluebutton-client/src/org/bigbluebutton/main/model/NetworkStatsData.as
	bigbluebutton-client/src/org/bigbluebutton/main/model/modules/ModulesDispatcher.as
	bigbluebutton-client/src/org/bigbluebutton/main/model/users/BBBUser.as
	bigbluebutton-client/src/org/bigbluebutton/main/model/users/Conference.as
	bigbluebutton-client/src/org/bigbluebutton/main/model/users/NetConnectionDelegate.as
	bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as
	bigbluebutton-client/src/org/bigbluebutton/main/model/users/events/ChangeMyRole.as
	bigbluebutton-client/src/org/bigbluebutton/main/model/users/events/ChangeRoleEvent.as
	bigbluebutton-client/src/org/bigbluebutton/main/model/users/events/LowerHandEvent.as
	bigbluebutton-client/src/org/bigbluebutton/main/model/users/events/StreamStoppedEvent.as
	bigbluebutton-client/src/org/bigbluebutton/main/views/CameraDisplaySettings.mxml
	bigbluebutton-client/src/org/bigbluebutton/main/views/LanguageSelector.mxml
	bigbluebutton-client/src/org/bigbluebutton/main/views/LoggedOutWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml
	bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml
	bigbluebutton-client/src/org/bigbluebutton/main/views/MuteMeButton.mxml
	bigbluebutton-client/src/org/bigbluebutton/main/views/NetworkStatsWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/main/views/RecordButton.mxml
	bigbluebutton-client/src/org/bigbluebutton/main/views/WebRTCEchoTest.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/chat/views/AddChatTabBox.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/chat/views/ChatBox.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/chat/views/ChatView.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/services/red5/Connection.as
	bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/view/components/DesktopPublishWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/view/components/DesktopViewWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/layout/managers/LayoutManager.as
	bigbluebutton-client/src/org/bigbluebutton/modules/layout/maps/LayoutEventMapDelegate.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/layout/model/LayoutDefinition.as
	bigbluebutton-client/src/org/bigbluebutton/modules/layout/model/WindowLayout.as
	bigbluebutton-client/src/org/bigbluebutton/modules/layout/views/AddButton.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/layout/views/LayoutsCombo.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/layout/views/ToolbarComponent.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/ConnectionManager.as
	bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/FlashCallManager.as
	bigbluebutton-client/src/org/bigbluebutton/modules/phone/managers/WebRTCCallManager.as
	bigbluebutton-client/src/org/bigbluebutton/modules/phone/views/components/ToolbarButton.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/present/managers/PresentManager.as
	bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/PresentationWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/UploadedPresentationRenderer.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/sharednotes/infrastructure/Client.as
	bigbluebutton-client/src/org/bigbluebutton/modules/sharednotes/infrastructure/HTTPServerConnection.as
	bigbluebutton-client/src/org/bigbluebutton/modules/sharednotes/infrastructure/ServerConnection.as
	bigbluebutton-client/src/org/bigbluebutton/modules/sharednotes/infrastructure/XMLServerConnection.as
	bigbluebutton-client/src/org/bigbluebutton/modules/users/maps/UsersMainEventMap.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageReceiver.as
	bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageSender.as
	bigbluebutton-client/src/org/bigbluebutton/modules/users/views/StatusItemRenderer.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/users/views/UsersWindow.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/business/VideoProxy.as
	bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/maps/VideoEventMap.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/maps/VideoEventMapDelegate.as
	bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/GraphicsWrapper.as
	bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/ToolbarPopupButton.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/VideoDock.mxml
	bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/views/WhiteboardToolbar.mxml
	bigbluebutton-client/src/org/bigbluebutton/util/i18n/ResourceUtil.as
	bigbluebutton-config/bigbluebutton-release
	bigbluebutton-config/bin/bbb-conf
	bigbluebutton-config/web/index.html
	bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy
	bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/PresentationController.groovy
	bigbluebutton-web/src/groovy/org/bigbluebutton/api/RecordingServiceHelperImp.groovy
	bigbluebutton-web/src/java/org/bigbluebutton/api/MeetingService.java
	bigbluebutton-web/src/java/org/bigbluebutton/api/messaging/MeetingMessageHandler.java
	bigbluebutton-web/src/java/org/bigbluebutton/api/messaging/MessagingService.java
	bigbluebutton-web/src/java/org/bigbluebutton/api/messaging/RedisStorageService.java
	bigbluebutton-web/src/java/org/bigbluebutton/presentation/imp/Pdf2SwfPageConverter.java
2015-11-25 15:58:36 +00:00
Calvin Walton
fc299487e4 recording: Allow configuring recording metadata to use https
This allows configuring a server to use https without having to edit
any ruby files directly.

(Ideally, the metadata files wouldn't include the server name/protocol
at all; that should be set dynamically by bbb-web, but this is what we
have for now.)
2015-11-06 11:49:36 -05:00
Anton Georgiev
8e407df405 Merge branch 'master' of github.com:bigbluebutton/bigbluebutton into webrtc-desktop-temp-1
Conflicts:
	akka-bbb-apps/build.sbt
	akka-bbb-fsesl/build.sbt
	bbb-common-message/build.sbt
	bigbluebutton-apps/build.gradle
2015-10-22 20:46:30 +00:00
Anton Georgiev
f08cd5262e temp changes 2015-10-13 19:00:50 +00:00
Anton Georgiev
6b8626d40f cleaning up and reverting unnecessary config 2015-09-29 16:03:40 +00:00
Anton Georgiev
1d1c8a421b deskshare edl for webrtc 2015-09-28 20:49:24 +00:00
Anton Georgiev
366b01fff7 webrtc deskshare work on recording scripts 2015-09-25 18:05:54 +00:00
Felipe Cecagno
32957898f6 refactored part of the bbb-0.9-recording-size code in order to include the size on the download size for mconf_encrypted and the playback size for the others; included raw_size for all available formats 2015-09-08 17:18:02 -03:00
Calvin Walton
cc23f30c2b Fix poll in recording when there are 0 responders
There were a couple of problems:

* A division by 0 when calculating the percentages
* Positioning of the number of results counter was incorrect

Fixes #2739
2015-08-24 14:42:31 -04:00
Calvin Walton
e3e0f0ef61 Add poll result display to the 'presentation' recording format
Note that this requires a new dependency be added to the
"bbb-playback-presentation" format; the "gnuplot" package is now
required (it's used to actually generate the chart images)
2015-08-11 14:55:59 -04:00
Pedro Beschorner Marin
cbfe8b8859 Added an update script for sizes injection in old recordings metadata and some refactoring 2015-06-10 17:07:11 +00:00
Pedro Beschorner Marin
f8ff4a6725 Injecting format size in metadata.xml 2015-06-09 21:06:57 +00:00
Pedro Beschorner Marin
6ef2bf6b27 Getting playback and full meeting published sizes 2015-06-09 14:39:35 +00:00
Pedro Beschorner Marin
4225a87abd Refactoring and cleanup 2015-06-04 16:03:20 +00:00
Pedro Beschorner Marin
a1a7096c3e Getting the raw size of the meeting data 2015-06-03 15:19:41 +00:00
Pedro Beschorner Marin
cc55e6f6a4 Adding new attributes to bbb-web 2015-06-02 18:58:11 +00:00
Calvin Walton
301665a35b Fix off-by-one error in slide clear events
In 0.9.0, the slide clear events changed from using 1-based page numbers to
using 0-based page numbers.

Add 1 to the page number for recordings generated on a 0.9.0+ server to
fix the issue; at this point it's too late in the release to change the value,
and there's too big of a body of existing recordings out there.
2015-04-14 17:33:49 -04:00
Calvin Walton
1078aef49d Add a note to the nginx config to tell 0.9.0 beta users of a possible upgrade path 2014-10-06 17:30:32 -04:00
Calvin Walton
630ef4c72c Move 0.81 files to a subdir, add nginx redirect for them.
Now the 0.81 presentation playback files are in an appropriate versioned
directory. If desired, the recording metadata can be updated to reference
the versioned files directly, but an nginx redirect has been added so
that unmodified recordings will also work.
2014-10-06 17:17:20 -04:00
Calvin Walton
8673d353bb Use the directory presentation/0.9.0 instead of presentation2
This makes it a bit more obvious how the versioning can work going
forwards, and makes it so that we do not need to update the nginx
config each time we have a new version of the playback files.

The 0.81 files remain at the top level of the presentation directory
for compatibility reasons.
2014-10-06 16:46:55 -04:00
Calvin Walton
852ea7b822 Revert 'presentation' dir to 0.81 code, add 'presentation2' for 0.9
This fixes an issue where recordings copied from a 0.81 server might
not play back correctly on a 0.9 server.

This changes the 0.9 recording scripts to use playback support files
from a different subdirectory, 'presentation2', while existing 0.81
recordings continue to use the 'presentation' directory.

If the raw files from an old recording are reprocessed, it will
switch to using the newer playback support files.
2014-10-06 16:15:25 -04:00
Calvin Walton
72fc36caef Actually fix slide indexes.
While the page numbers from BigBlueButton are zero-based, the slide images
are generated as 1-based.
2014-09-09 17:15:57 -04:00
Calvin Walton
c7967810b2 Revert the presentation publish page index altering
This was added because BigBlueButton 0.9 started using 1-based page
numbers in the events.xml file. That change has been reverted, so as
to avoid behaviour changes from 0.81 in places where it's unnecessary.
2014-09-02 15:46:52 -04:00
Calvin Walton
15fe621523 Use the timestamp from the meeting ID to calculate the real start time
With the switch to a different clock source in red5, the timestamps
in the events file are no longer real-time, but are rather in
seconds since computer boot.

The timestamp in the meeting id is still realtime, so use that as
the start time. Calculate the end time by adding the meeting length
to the start time.
2014-08-29 11:19:59 -04:00
Gustavo Salazar
fb013e751f support bbb_version in events.xml 2014-05-06 14:42:03 -05:00
Gustavo Salazar
7d291abcfd delete old raw dir from published recordings 2014-04-14 15:14:14 -07:00
Richard Alam
460dfb52bf - modify scripts so we can run it manually 2014-04-03 20:23:49 +00:00
Gustavo Salazar
8a32c657d5 Handle negative index in slide number.
Related to issue #1710
2014-01-23 16:36:28 -05:00
Gustavo Salazar
614cbdde92 Fix #1711
Support pdf extension in uppercase https://code.google.com/p/bigbluebutton/issues/detail?id=1711
2014-01-23 14:03:09 -05:00
Felipe Cecagno
3440ed0fe3 Merge branch 'v0.81' into record-button
Conflicts:
	bigbluebutton-client/branding/default/style/css/BBBDefault.css
	bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml
2014-01-14 14:05:41 -02:00
Felipe Cecagno
dab7547014 added a check on presentation publish script to avoid the duplication of thumbnails for a given slide 2013-12-02 15:23:02 -02:00
Felipe Cecagno
955f9edc99 fixing the issue of the whiteboard annotations not being shown in the proper slide; cleaning the environment (events.xml, recorded flag) when the session was recorded but the record button wasn't used 2013-12-02 13:57:05 -02:00
Calvin Walton
1d488e3c56 Last-ditch fix for missing presentation images
We can only get here if all of the files for the presentation are
*completely* missing. One thing that can cause this is if the
presentation filename starts with a '.' character - the presentation
files aren't correctly archived then.
2013-10-31 18:56:09 -02:00
Calvin Walton
e6fe43f9b6 Fix a logger method call in presentation script
This shouldn't normally be hit... but if it ever is, the processing will
fail with an error, since the Logger class doesn't have a method named
'warning'.
2013-10-23 10:01:02 -04:00
Gustavo Salazar
38f8ed5741 Support processing of images with extension .jpeg 2013-10-18 17:46:07 -05:00