summaryrefslogtreecommitdiff
AgeCommit message (Expand)Author
2020-06-29libcamera: ipu3: Fix wrong indentationJacopo Mondi
2020-06-29libcamera: ipu3: Accept an empty roles listJacopo Mondi
2020-06-29libcamera: ipu3: Improve error on multiple raw streams requestJacopo Mondi
2020-06-28libcamera: ipu3: imgu: Use unique_ptr for video and subdevicesNiklas Söderlund
2020-06-28libcamera: ipu3: imgu: Remove ImgUOutputNiklas Söderlund
2020-06-28libcamera: ipu3: Remove IPU3StreamNiklas Söderlund
2020-06-28libcamera: ipu3: Remove the active flag from IPU3StreamNiklas Söderlund
2020-06-28libcamera: ipu3: Do not duplicate data in IPU3StreamNiklas Söderlund
2020-06-28libcamera: ipu3: imgu: Use specific functions to configure each sinkNiklas Söderlund
2020-06-28libcamera: ipu3: imgu: Mark things that are internal as privateNiklas Söderlund
2020-06-28libcamera: ipu3: imgu: Do not cache indexNiklas Söderlund
2020-06-28libcamera: ipu3: imgu: Move the ImgUDevice class to separate filesNiklas Söderlund
2020-06-28libcamera: ipu3: Remove usage of IPU3CameraData from ImgUDeviceNiklas Söderlund
2020-06-28libcamera: ipu3: Always import buffers for ImgU sinksNiklas Söderlund
2020-06-28libcamera: ipu3: Import instead of allocate statistic buffersNiklas Söderlund
2020-06-28libcamera: ipu3: Remove unused name_ filed from IPU3StreamNiklas Söderlund
2020-06-26libcamera: Summarize licensing terms in COPYING.rstLaurent Pinchart
2020-06-26libcamera: ipu3: Allow zero-copy RAW stream captureNiklas Söderlund
2020-06-26libcamera: ipu3: cio2: Hide buffer allocation and freeing from usersNiklas Söderlund
2020-06-26libcamera: ipu3: cio2: Make the V4L2 devices privateNiklas Söderlund
2020-06-26libcamera: ipu3: cio2: Add function to generate configurationNiklas Söderlund
2020-06-26libcamera: ipu3: cio2: Consolidate information about formatsNiklas Söderlund
2020-06-26libcamera: ipu3: cio2: Move the CIO2Device class to separate filesNiklas Söderlund
2020-06-26libcamera: ipu3: Calculate number of buffers for ImgUNiklas Söderlund
2020-06-26libcamera: ipu3: Breakout stream assignment to new functionNiklas Söderlund
2020-06-26libcamera: ipu3: Fold mediaBusToFormat() into only callerNiklas Söderlund
2020-06-26libcamera: pipeline_handler: Correct small typo in acquireMediaDevice descrip...Chris Chinchilla
2020-06-26libcamera: pipeline_handler: Fix incorrect method in CameraData docsChris Chinchilla
2020-06-25libcamera: pipeline: raspberrypi: Add StreamFormats to StreamConfigurationNaushir Patuck
2020-06-25ipa: rpi: Add "focus" algorithmDavid Plowman
2020-06-25v4l2: v4l2_camera_proxy: Serialize accesses to the proxyPaul Elder
2020-06-25v4l2: v4l2_camera_proxy: Fix buffer flags related to queueingPaul Elder
2020-06-25v4l2: v4l2_camera_proxy: Don't allow buffers to be freed if still mmapedPaul Elder
2020-06-25v4l2: v4l2_camera_proxy: Don't allow streamon if no buffers have been requestedPaul Elder
2020-06-25v4l2: v4l2_camera_proxy: Check arg->index bounds for querybuf, qbuf, dqbufPaul Elder
2020-06-25v4l2: v4l2_camera: Clear pending requests on freeBuffers and streamOffPaul Elder
2020-06-25v4l2: v4l2_camera: Don't use libcamera::Semaphore for available buffersPaul Elder
2020-06-25v4l2: v4l2_camera_proxy: Clear internal buffer vector on reqbufs 0Paul Elder
2020-06-25v4l2: v4l2_camera_proxy: noop if streamon when stream is already onPaul Elder
2020-06-25v4l2: v4l2_camera_proxy: Disallow dqbuf when not streamingPaul Elder
2020-06-25v4l2: v4l2_camera: Add isRunning()Paul Elder
2020-06-25v4l2: v4l2_camera_proxy: Implement VIDIOC_ENUM_FRAMESIZESPaul Elder
2020-06-25v4l2: v4l2_camera_proxy: Implement VIDIOC_ENUMINPUT, VIDIOC_G/S_INPUTPaul Elder
2020-06-25v4l2: v4l2_camera_proxy: Implement VIDIOC_G/S_PRIORITYPaul Elder
2020-06-25v4l2: v4l2_camera_proxy: Fix v4l2-compliance support for extended formatsPaul Elder
2020-06-25v4l2: v4l2_camera_proxy: Check for null arg values in main ioctl handlerPaul Elder
2020-06-25v4l2: v4l2_camera_proxy: Set timestamp monotonic buffer flag on reqbufsPaul Elder
2020-06-25v4l2: v4l2_camera_proxy: Clear reserved field in reqbufsPaul Elder
2020-06-25v4l2: v4l2_camera_proxy: Free old buffers on reqbufs > 0Paul Elder
2020-06-25v4l2: v4l2_compat: Support multiple openPaul Elder
href='#n345'>345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Copyright (C) 2019, Google Inc.
#
%YAML 1.2
---
controls:
  - Location:
      type: int32_t
      description: |
        Camera mounting location
      enum:
        - name: CameraLocationFront
          value: 0
          description: |
            The camera is mounted on the front side of the device, facing the
            user
        - name: CameraLocationBack
          value: 1
          description: |
            The camera is mounted on the back side of the device, facing away
            from the user
        - name: CameraLocationExternal
          value: 2
          description: |
            The camera is attached to the device in a way that allows it to
            be moved freely

  - Rotation:
      type: int32_t
      description: |
        The camera rotation is expressed as the angular difference in degrees
        between two reference systems, one relative to the camera module, and
        one defined on the external world scene to be captured when projected
        on the image sensor pixel array.

        A camera sensor has a 2-dimensional reference system 'Rc' defined by
        its pixel array read-out order. The origin is set to the first pixel
        being read out, the X-axis points along the column read-out direction
        towards the last columns, and the Y-axis along the row read-out
        direction towards the last row.

        A typical example for a sensor with a 2592x1944 pixel array matrix
        observed from the front is

                    2591       X-axis          0
                      <------------------------+ 0
                      .......... ... ..........!
                      .......... ... ..........! Y-axis
                                 ...           !
                      .......... ... ..........!
                      .......... ... ..........! 1943
                                               V


        The external world scene reference system 'Rs' is a 2-dimensional
        reference system on the focal plane of the camera module. The origin is
        placed on the top-left corner of the visible scene, the X-axis points
        towards the right, and the Y-axis points towards the bottom of the
        scene. The top, bottom, left and right directions are intentionally not
        defined and depend on the environment in which the camera is used.

        A typical example of a (very common) picture of a shark swimming from
        left to right, as seen from the camera, is

                     0               X-axis
                   0 +------------------------------------->
                     !
                     !
                     !
                     !           |\____)\___
                     !           ) _____  __`<
                     !           |/     )/
                     !
                     !
                     !
                     V
                   Y-axis

        With the reference system 'Rs' placed on the camera focal plane.

                                        ¸.·˙!
                                    ¸.·˙    !
                        _       ¸.·˙        !
                     +-/ \-+¸.·˙            !
                     | (o) |                ! Camera focal plane
                     +-----+˙·.¸            !
                                ˙·.¸        !
                                    ˙·.¸    !
                                        ˙·.¸!

        When projected on the sensor's pixel array, the image and the associated
        reference system 'Rs' are typically (but not always) inverted, due to
        the camera module's lens optical inversion effect.

        Assuming the above represented scene of the swimming shark, the lens
        inversion projects the scene and its reference system onto the sensor
        pixel array, seen from the front of the camera sensor, as follow

                  Y-axis
                     ^
                     !
                     !
                     !
                     !            |\_____)\__
                     !            ) ____  ___.<
                     !            |/    )/
                     !
                     !
                     !
                   0 +------------------------------------->
                     0               X-axis

        Note the shark being upside-down.

        The resulting projected reference system is named 'Rp'.

        The camera rotation property is then defined as the angular difference
        in the counter-clockwise direction between the camera reference system
        'Rc' and the projected scene reference system 'Rp'. It is expressed in
        degrees as a number in the range [0, 360[.

        Examples

        0 degrees camera rotation


                          Y-Rp
                           ^
                    Y-Rc   !
                     ^     !
                     !     !
                     !     !
                     !     !
                     !     !
                     !     !
                     !     !
                     !     !
                     !   0 +------------------------------------->
                     !     0               X-Rp
                   0 +------------------------------------->
                     0               X-Rc


                                      X-Rc                0
                     <------------------------------------+ 0
                                 X-Rp                 0   !
                 <------------------------------------+ 0 !
                                                      !   !
                                                      !   !
                                                      !   !
                                                      !   !
                                                      !   !
                                                      !   !
                                                      !   !
                                                      !   V
                                                      !  Y-Rc
                                                      V
                                                     Y-Rp

        90 degrees camera rotation

                     0        Y-Rc
                   0 +-------------------->
                     !   Y-Rp
                     !    ^
                     !    !
                     !    !
                     !    !
                     !    !
                     !    !
                     !    !
                     !    !
                     !    !
                     !    !
                     !  0 +------------------------------------->
                     !    0              X-Rp
                     !
                     !
                     !
                     !
                     V
                    X-Rc

        180 degrees camera rotation

                                                  0
             <------------------------------------+ 0
                              X-Rc                !
                    Y-Rp                          !
                     ^                            !
                     !                            !
                     !                            !
                     !                            !
                     !                            !
                     !                            !
                     !                            !
                     !                            V
                     !                           Y-Rc
                   0 +------------------------------------->
                     0              X-Rp

        270 degrees camera rotation

                     0        Y-Rc
                   0 +-------------------->
                     !                                        0
                     !    <-----------------------------------+ 0
                     !                    X-Rp                !
                     !                                        !
                     !                                        !
                     !                                        !
                     !                                        !
                     !                                        !
                     !                                        !
                     !                                        !
                     !                                        !
                     !                                        V
                     !                                       Y-Rp
                     !
                     !
                     !
                     !
                     V
                    X-Rc


        Example one - Webcam

        A camera module installed on the user facing part of a laptop screen
        casing used for video calls. The captured images are meant to be
        displayed in landscape mode (width > height) on the laptop screen.

        The camera is typically mounted upside-down to compensate the lens
        optical inversion effect.

                          Y-Rp
                    Y-Rc   ^
                     ^     !
                     !     !
                     !     !       |\_____)\__
                     !     !       ) ____  ___.<
                     !     !       |/    )/
                     !     !
                     !     !
                     !     !
                     !   0 +------------------------------------->
                     !     0           X-Rp
                   0 +------------------------------------->
                     0            X-Rc

        The two reference systems are aligned, the resulting camera rotation is
        0 degrees, no rotation correction needs to be applied to the resulting
        image once captured to memory buffers to correctly display it to users.

                     +--------------------------------------+
                     !                                      !
                     !                                      !
                     !                                      !
                     !             |\____)\___              !
                     !             ) _____  __`<            !
                     !             |/     )/                !
                     !                                      !
                     !                                      !
                     !                                      !
                     +--------------------------------------+

        If the camera sensor is not mounted upside-down to compensate for the
        lens optical inversion, the two reference systems will not be aligned,
        with 'Rp' being rotated 180 degrees relatively to 'Rc'.


                              X-Rc                0
             <------------------------------------+ 0
                                                  !
                    Y-Rp                          !
                     ^                            !
                     !                            !
                     !       |\_____)\__          !
                     !       ) ____  ___.<        !
                     !       |/    )/             !
                     !                            !
                     !                            !
                     !                            V
                     !                           Y-Rc
                   0 +------------------------------------->
                     0            X-Rp

        The image once captured to memory will then be rotated by 180 degrees

                     +--------------------------------------+
                     !                                      !
                     !                                      !