Beatmup
converter.h
Go to the documentation of this file.
1 /*
2  Beatmup image and signal processing library
3  Copyright (C) 2019, lnstadrum
4 
5  This program is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18 
19 #pragma once
20 #include "abstract_bitmap.h"
21 #include "../parallelism.h"
22 
23 namespace Beatmup {
24 
25  /**
26  Converts bitmap content from one pixel format to another one.
27  */
29  private:
30  const int MIN_PIXEL_COUNT_PER_THREAD = 1000; //!< minimum number of pixels per worker
31  AbstractBitmap *input, *output; //!< input and output bitmaps
32 
33  void doConvert(int outX, int outY, msize nPix);
34  protected:
35  virtual bool process(TaskThread& thread);
36  virtual void beforeProcessing(ThreadIndex threadCount, ProcessingTarget target, GraphicPipeline* gpu);
37  virtual void afterProcessing(ThreadIndex threadCount, GraphicPipeline* gpu, bool aborted);
38  public:
41  ThreadIndex getMaxThreads() const;
43 
45  };
46 
47 }
A very basic class for any image.
Task: an operation that can be executed by multiple threads in parallel.
Definition: parallelism.h:90
TaskDeviceRequirement
Specifies which device (CPU and/or GPU) is used to run the task.
Definition: parallelism.h:95
Makes sure the bitmap content is accessible within an image processing task.
Definition: content_lock.h:34
Converts bitmap content from one pixel format to another one.
Definition: converter.h:28
virtual bool process(TaskThread &thread)
Executes the task on CPU within a given thread.
Definition: converter.cpp:74
virtual void beforeProcessing(ThreadIndex threadCount, ProcessingTarget target, GraphicPipeline *gpu)
Instruction called before the task is executed.
Definition: converter.cpp:60
AbstractBitmap * input
Definition: converter.h:31
const int MIN_PIXEL_COUNT_PER_THREAD
minimum number of pixels per worker
Definition: converter.h:30
TaskDeviceRequirement getUsedDevices() const
Communicates devices (CPU and/or GPU) the task is run on.
Definition: converter.cpp:54
AbstractBitmap * output
input and output bitmaps
Definition: converter.h:31
static void convert(AbstractBitmap &input, AbstractBitmap &output)
Definition: converter.cpp:209
ThreadIndex getMaxThreads() const
Gives the upper limint on the number of threads the task may be performed by.
Definition: converter.cpp:49
void doConvert(int outX, int outY, msize nPix)
Definition: converter.cpp:110
void setBitmaps(AbstractBitmap *input, AbstractBitmap *output)
Definition: converter.cpp:43
virtual void afterProcessing(ThreadIndex threadCount, GraphicPipeline *gpu, bool aborted)
Instruction called after the task is executed.
Definition: converter.cpp:69
Internal low-level GPU control API.
Definition: pipeline.h:33
Thread executing tasks.
Definition: parallelism.h:154
uint32_t msize
memory size
Definition: basic_types.h:30
unsigned char ThreadIndex
number of threads / thread index
Definition: parallelism.h:68
ProcessingTarget
Definition: basic_types.h:55